【发布时间】:2017-02-08 04:18:00
【问题描述】:
我们遇到了一个问题:RedisMqServer 的多个实例相互绊倒 - 停止一台服务器会停止其他服务器。显然,我们实现这一点的方式是错误的,但我无法确定在这种情况下应该如何使用 RedisMqServer。
我们的基础架构包括:
- 主/从配置中的两个 Redis 服务器
- 两个负载平衡的 API 实例(以下称为“API A”)
- 两个负载平衡的 API 实例(以下称为“API B”)
API A 和 B 是两个独立的应用程序,它们使用 ServiceStack.Redis 的 RedisMqServer 相互发送同步和异步消息。我们正在使用 ServiceStack 的开源 v3 版本。
两个 API 都配置了 RedisMqServer,因为异步通信发生在两个方向。
当RedisMqServer 被释放时,它会在mq:topic:in 频道上发送STOP 消息,这会导致服务器取消订阅所有频道,从而停止服务请求。
但是,由于 API A 和 API B 都在使用此通道,因此停止其中一个最终会停止另一个。
每个RedisMqServer 实例是否应该使用一个Redis 服务器实例?
值得注意的是,每个 API 在任何时间点都只连接到单个 Redis 服务器。仅当主服务器不可用时,才连接到从服务器。
【问题讨论】:
标签: redis servicestack.redis servicestack-bsd