我们遇到的问题是RedisMqServer
的多个实例互相绊倒 - 停止一台服务器停止其他服务器。很明显,我们实现这一点的方式是错误的,但我无法确定在这种情况下应该如何使用RedisMqServer
。
我们的基础设施包括:
API A和B是两个独立的应用程序,它们使用ServiceStack.Redis的RedisMqServer
向对方发送同步和异步消息。我们正在使用ServiceStack的开源v3版本。
两个API都配置了RedisMqServer
,因为异步通信在两个方向都有发生。
当处置RedisMqServer
时,它会在STOP
频道上发送mq:topic:in
消息,这会导致服务器取消订阅所有频道,从而停止服务请求。
但是,由于API A和API B都在使用此通道,因此停止其中任何一个都会停止另一个。
是否应该为每个RedisMqServer
实例使用一个Redis服务器实例?
值得注意的是,每个API仅在任何时间点连接到单个Redis服务器。仅当主服务器不可用时,才连接从服务器。
答案 0 :(得分:1)
这是Red3在v3中的行为,但v4中的最新RedisMqServer
按预期工作,只会停止已处置的RedisMqServer
实例。