ServiceStack RedisServerEvents实现将服务器组件与客户端组件联系起来。没有办法只运行客户端组件 只需在ServiceStack Server事件通道上发布消息而不必 启动整个RedisPubSub服务器,该服务器也启动本地MemoryServerEvents服务器。
临时解决方法: 我将“发布”(NotifyChannel,NotifyUserId等)的客户端实现的代码复制到私有模块。
问题: 这是一个潜在的设计问题还是我没有正确使用RedisServerEvents?
答案 0 :(得分:1)
Redis Server Events是用于托管实时SSE连接的后端服务器组件,它使ServiceStack Server Events能够跨多个负载均衡的App Server工作。 C# Server Events Client是客户端组件,允许您订阅ServiceStack Server Events实例,加入频道,处理消息等。
目前还不清楚你的服务到底是什么,但如果你只是想通过Redis调用ServiceStack服务,你可能会寻找与服务器事件完全独立的Redis MQ,它允许你发布Request DTO而不需要在客户端上配置服务器:
客户可以使用RedisMessageProducer
发布消息,例如:
var redisManager = new RedisManagerPool("localhost:6379");
using (var mqClient = new RedisMessageProducer(redisManager))
{
mqClient.Publish(new Hello { Name = "Client 1" });
}
或者,如果首选,则可以使用RedisMessageFactory
来提供对IMessageQueueClient和IMessageProducer的访问权限:
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实例。