ServiceStack:如何使用分布式RedisEvents?

时间:2018-03-10 06:10:14

标签: c# redis servicestack servicestack.redis

关于分布式RedisEvents如何在ServiceStack中工作的文档很少(我发现)。

文档说明:

  

默认MemoryServerEvents实现的一个限制是限制在单个App Server中使用,其中维护所有客户端连接。这不再是新的Redis ServerEvents后端的限制,后端利用分布式redis服务器后端提供能够为扇出/负载平衡的App Server提供服务的横向扩展选项。如果您熟悉SignalR,这类似于SignalR与Redis后端的横向扩展。

它还说明了如何添加插件,但是没有其他任何关于如何分发事件,发布分布式事件的方式以及如何处理对其作出反应的节点以及发布到将到达的通道正确的终端客户。

我错过了什么或几乎没有关于此的文件?

1 个答案:

答案 0 :(得分:0)

RedisServerEvents的文档位于:http://docs.servicestack.net/redis-server-events

使用内存或Redis服务器事件后端之间的API没有区别,后端在IServerEvents API后透明地工作。唯一的区别在于注册时需要使用已配置的RedisServerEvents注册IRedisClientsManager

var redisHost = AppSettings.GetString("RedisHost");
if (redisHost != null)
{
    container.Register<IRedisClientsManager>(
        new RedisManagerPool(redisHost));

    container.Register<IServerEvents>(c => 
        new RedisServerEvents(c.Resolve<IRedisClientsManager>()));

    container.Resolve<IServerEvents>().Start();
}

这将使用IServerEvents实现取代默认内存RedisServerEvents,该实现通过Redis Pub / Sub发送API调用,以通知配置了相同RedisServerEvents配置的所有应用服务器将发送服务器在本地/event-stream上为已连接的客户提供的活动。