sql >> Databáze >  >> NoSQL >> Redis

Redis Managed Pub/Sub Server

Pub/Sub engine pohánějící Redis ServerEvents a Redis MQ byl extrahován a zapouzdřen do znovu použitelné třídy, kterou lze použít nezávisle pro zpracování zpráv publikovaných na konkrétních kanálech Redis Pub/Sub.

RedisPubSubServer zpracovává zprávy ve spravovaném vláknu na pozadí, které se automaticky znovu připojuje když připojení redis-server selže a funguje jako nezávislá služba na pozadí, kterou lze zastavit a spustit na příkaz.

Veřejné API je zachyceno v rozhraní IRedisPubSubServer:

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();
}

Použití #

Chcete-li použít RedisPubSubServer , inicializujte jej s kanály, k jejichž odběru se chcete přihlásit, a přiřaďte obslužné nástroje pro každou z událostí, které chcete zpracovat. Minimálně budete chtít zpracovat 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();

Volání Start() po jeho inicializaci začne naslouchat a zpracovávat všechny zprávy publikované na odebíraných kanálech.


  1. Node.js, Socket.io, Redis pub/sub vysoká hlasitost, potíže s nízkou latencí

  2. Django, Redis:Kam umístit kód připojení

  3. Seřadit vnořené pole objektů

  4. Agregace MongoDB:Jak získat celkový počet záznamů?