RabbitMQ 可以通过公共/订阅方法持久保存消息吗?

RabbitMQ 可以通过公共/订阅方法持久保存消息吗?

只是对我们的消息总线做了一些研究,我还没有通过谷歌搜索得到关于 RabbitMQ 是否可以通过公共/订阅方法提供持久性的直接答案。

例如,订阅者 A 和 B 都订阅了发布者 C,如果发布者 C 在订阅者 B 宕机时发布了一条消息,那么订阅者 B 恢复后是否会收到该消息?

答案1

简短的回答是肯定的:RabbitMQ 支持消息持久性。要实现这一点,消息必须是持久的(在客户端中设置),并且路由到的队列必须是持久的。查看更多这里

在您的问题中,您混淆了两个概念,“订阅者关闭”和“消息持久性”。如果 A 和 B 都只监听一个队列,其中发布了一条消息,则该消息将被 A 使用。A 将发送确认,并且该消息将从队列中删除 = 当 B 返回代理时,B 无法处理该消息。如果您希望 A 和 B 都使用该消息,您可以通过多种方式实现此目的,例如使用扇出交换然后在绑定到交换机的队列上设置单个活跃消费者,其中 A 和 B 各自获得一个队列。

相关内容