只是对我们的消息总线进行了一些研究,我没有从谷歌搜索中得到关于 RabbitMQ 是否可以通过公共/订阅方法提供持久性的直接答案。
例如。订阅者 A 和 B 都订阅了发布者 C,如果发布者 C 在订阅者 B 宕机时发布消息,订阅者 B 恢复时会收到消息吗?
只是对我们的消息总线进行了一些研究,我没有从谷歌搜索中得到关于 RabbitMQ 是否可以通过公共/订阅方法提供持久性的直接答案。
例如。订阅者 A 和 B 都订阅了发布者 C,如果发布者 C 在订阅者 B 宕机时发布消息,订阅者 B 恢复时会收到消息吗?
简短的回答是肯定的:RabbitMQ 支持消息的持久性。为此,消息必须是持久的(在客户端中设置),并且它路由到的队列必须是持久的。在这里查看更多。
在您的问题中,您混淆了两个概念,“订阅者关闭”和“消息持久性”。如果 A 和 B 都只监听一个发布了一条消息的队列,它将被 A 消费。A 将发送一个 ack 并且该消息将从队列中删除 = 当 B 返回时 B 无法处理经纪人。如果您希望 A 和 B 都使用该消息,您可以通过多种方式执行此操作,例如使用扇出交换,然后在绑定到交换的队列上设置单个活动使用者,其中 A 和 B 都得到一个队列.