即使客户端组件,ServiceStack RedisServerEvents也必须启动RedisPubSub服务器

时间:2016-05-04 16:11:40

标签: servicestack servicestack.redis

ServiceStack RedisServerEvents实现将服务器组件与客户端组件联系起来。没有办法只运行客户端组件 只需在ServiceStack Server事件通道上发布消息而不必 启动整个RedisPubSub服务器,该服务器也启动本地MemoryServerEvents服务器。

临时解决方法:   我将“发布”(NotifyChannel,NotifyUserId等)的客户端实现的代码复制到私有模块。

问题:   这是一个潜在的设计问题还是我没有正确使用RedisServerEvents?

1 个答案:

答案 0 :(得分:1)

Redis Server Events是用于托管实时SSE连接的后端服务器组件,它使ServiceStack Server Events能够跨多个负载均衡的App Server工作。 C# Server Events Client是客户端组件,允许您订阅ServiceStack Server Events实例,加入频道,处理消息等。

目前还不清楚你的服务到底是什么,但如果你只是想通过Redis调用ServiceStack服务,你可能会寻找与服务器事件完全独立的Redis MQ,它允许你发布Request DTO而不需要在客户端上配置服务器:

RedisMQ Client

客户可以使用RedisMessageProducer发布消息,例如:

var redisManager = new RedisManagerPool("localhost:6379");
using (var mqClient = new RedisMessageProducer(redisManager))
{
    mqClient.Publish(new Hello { Name = "Client 1" });
}

或者,如果首选,则可以使用RedisMessageFactory来提供对IMessageQueueClientIMessageProducer的访问权限:

IMessageFactory redisMqFactory = new RedisMessageFactory(redisManager);
using (var mqClient = redisMqFactory.CreateMessageQueueClient())
{
    mqClient.Publish(new Hello { Name = "Client 1" });
}

它仍然需要Redis MQ Server to be started on the Server,但客户端只需要能够发布到Redis实例。