ServiceStack.Redis v3 和多主机 - 推荐架构

ServiceStack.Redis v3 and multiple hosts - recommended architecture

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

我们的基础设施包括:

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

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

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

然而,由于 API A 和 API B 都在使用此频道,停止其中一个最终会停止另一个。

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

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

这是 v3 中 Redis MQ 的行为,但 v4 中最新的 RedisMqServer 会按预期工作,只会停止已处置的 RedisMqServer 个实例。