1

我们遇到了一个问题,即多个实例RedisMqServer相互绊倒 - 停止一个服务器会停止其他服务器。显然,我们实现这一点的方式是错误的,但我无法确定RedisMqServer在这种情况下应该如何使用。

我们的基础设施包括:

  • 主/从配置中的两个 Redis 服务器
  • 两个负载均衡的 API 实例(以下称为“API A”)
  • 两个负载平衡的 API 实例(以下称为“API B”)

API A 和 B 是两个独立的应用程序,它们使用 ServiceStack.RedisRedisMqServer相互发送同步和异步消息。我们正在使用 ServiceStack 的开源 v3 版本。

两个 API 都有一个RedisMqServer配置,因为异步通信发生在两个方向。

RedisMqServer被释放时,它会在通道上发送一条STOP消息mq:topic:in,这会导致服务器取消订阅所有通道,从而停止它为请求提供服务。

但是,由于 API A 和 API B 都在使用此通道,因此停止其中一个最终会停止另一个。

是否应该为每个实例使用一个 Redis 服务器实例RedisMqServer

值得注意的是,每个 API 在任何时间点都只连接到单个 Redis 服务器。仅当主服务器不可用时,才连接到从服务器。

4

1 回答 1

1

这是 v3 中 Redis MQ 的行为,但RedisMqServerv4 中的最新版本按预期工作,仅停止RedisMqServer已处置的实例。

于 2017-02-08T04:33:00.340 回答