【问题标题】:RabbitMQ multiple listeners for same message prevent duplicate listening同一消息的 RabbitMQ 多个侦听器可防止重复侦听
【发布时间】:2019-06-17 09:25:34
【问题描述】:

我在 Spring Boot 应用程序中使用 rabbitmq。我正在使用 aws ecs 进行部署。现在假设多个实例正在运行我的服务。并且rabbitmq监听订单创建是通过直接交换注册的。那么下订单时会发生什么?我的两个服务实例都会收到相同的消息吗?如果是,如何防止这两个听众重复消息?

【问题讨论】:

  • 你研究过集群吗?
  • @JakeHolzinger 你是说日志吗?
  • 您的服务是否会在直接交换中为同一队列创建侦听器?直接交换不会将消息传递给它遵循循环的同一队列中的所有消费者。
  • 是的,服务将在同一个队列上创建监听器。从日志中我可以看到它分布在监听器中。没有重复的消息。所以这是正确的行为,对吧?
  • @MihirShah 是的,这是正确的行为。

标签: spring-boot rabbitmq message-queue


【解决方案1】:

如果服务在直接交换上为同一队列创建多个侦听器/消费者,则适用以下机制:

默认情况下,RabbitMQ 会按顺序将每条消息发送给下一个消费者。平均而言,每个消费者都会收到相同数量的消息。这种分发消息的方式称为循环。

本主题的最佳教程:https://www.rabbitmq.com/tutorials/tutorial-two-java.html

【讨论】:

  • 感谢您消除我的疑问。你能评论我在stackoverflow.com/questions/54333616/…的另一个查询吗?
  • 如果您的问题被清除,请接受答案。谢谢。您的其他问题超出了我的知识范围。
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多