ServiceStack RedisServerEvents 必须为客户端组件启动 RedisPubSub 服务器

ServiceStack RedisServerEvents must start RedisPubSub server even for a client component

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

临时解决方法: 我将 'Publish'(NotifyChannel、NotifyUserId 等)的客户端实现代码复制到私有模块。

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

Redis Server Events is the back-end server component for hosting real-time SSE connections which enables ServiceStack Server Events to work across multiple load-balanced App Servers. The C# Server Events Client 是客户端组件,它允许您订阅 ServiceStack 服务器事件实例、加入频道、处理消息等。

目前还不清楚你到底想要什么,但如果你只是想通过 Redis 调用 ServiceStack 服务,你可能会寻找 Redis MQ,它与服务器事件完全分开,它可以让你发布请求 DTO 而无需需要在客户端配置服务器:

RedisMQ Client

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

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

或者,如果愿意,可以改用 RedisMessageFactory,它提供对 IMessageQueueClient and 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 实例。