sql >> Database teknologi >  >> NoSQL >> Redis

Redis Managed Pub/Sub Server

Pub/Sub-motoren, der driver Redis ServerEvents og Redis MQ, er blevet ekstraheret og indkapslet i en genbrugelig klasse, der kan bruges uafhængigt til at håndtere meddelelser, der er udgivet til specifikke Redis Pub/Sub-kanaler.

RedisPubSubServer behandler meddelelser i en administreret baggrundstråd, der genopretter automatisk forbindelse når redis-serverforbindelsen fejler og fungerer som en uafhængig baggrundstjeneste, der kan stoppes og startes på kommando.

Den offentlige API er fanget i IRedisPubSubServer-grænsefladen:

public interface IRedisPubSubServer : IDisposable
{
    IRedisClientsManager ClientsManager { get; }
    // What Channels it's subscribed to
    string[] Channels { get; }

    // Run once on initial StartUp
    Action OnInit { get; set; }
    // Called each time a new Connection is Started
    Action OnStart { get; set; }
    // Invoked when Connection is broken or Stopped
    Action OnStop { get; set; }
    // Invoked after Dispose()
    Action OnDispose { get; set; }

    // Fired when each message is received
    Action<string, string> OnMessage { get; set; }
    // Fired after successfully subscribing to the specified channels
    Action<string> OnUnSubscribe { get; set; }
    // Called when an exception occurs 
    Action<Exception> OnError { get; set; }
    // Called before attempting to Failover to a new redis master
    Action<IRedisPubSubServer> OnFailover { get; set; }

    int? KeepAliveRetryAfterMs { get; set; }
    // The Current Time for RedisServer
    DateTime CurrentServerTime { get; }

    // Current Status: Starting, Started, Stopping, Stopped, Disposed
    string GetStatus();
    // Different life-cycle stats
    string GetStatsDescription();
    
    // Subscribe to specified Channels and listening for new messages
    IRedisPubSubServer Start();
    // Close active Connection and stop running background thread
    void Stop();
    // Stop than Start
    void Restart();
}

Anvendelse #

For at bruge RedisPubSubServer , initialiser den med de kanaler, du vil abonnere på, og tildel handlere for hver af de begivenheder, du vil håndtere. Som minimum vil du gerne håndtere OnMessage :

var clientsManager = new PooledRedisClientManager();
var redisPubSub = new RedisPubSubServer(clientsManager, "channel-1", "channel-2") {
        OnMessage = (channel, msg) => "Received '{0}' from '{1}'".Print(msg, channel)
    }.Start();

Kalder Start() efter den er initialiseret, vil den få den til at begynde at lytte og behandle alle beskeder, der er offentliggjort til de abonnenter.


  1. Sådan opretter du forbindelse til dine MongoDB-implementeringer ved hjælp af Robo 3T GUI

  2. Kan ikke bruge mongo-kommando, viser kommando ikke fundet på mac

  3. Opdater felt med et andet felts værdi i dokumentet

  4. MongoDB $indexOfCP