【问题标题】:ServiceStack RedisServerEvents must start RedisPubSub server even for a client componentServiceStack RedisServerEvents 必须为客户端组件启动 RedisPubSub 服务器
【发布时间】:2016-05-04 16:11:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: servicestack servicestack.redis


    【解决方案1】:

    Redis Server Events 是用于托管实时 SSE 连接的后端服务器组件,它使 ServiceStack 服务器事件能够跨多个负载平衡的应用服务器工作。 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,它提供对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 实例。

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      相关资源
      最近更新 更多