当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ-2交换向同一个队列发送消息

凌蕴藉
2023-03-14

我有两个独立实例(p1、p2)的生产者应用程序和两个独立实例(c1、c2)的消费者应用程序。

生产者p1连接到exchange,主题为t1,队列名称为name1。

使用者c1连接到exchange,主题为t1,队列名称为name1。

生产者p2连接到exchange,主题为t2,队列名称为name1。

使用者c2连接到exchange,主题为t2,队列名称为name1。

我在RabbitMQ GUI中看到我有2个交换,但只有1个队列。相反,c1将仅接收来自p1的消息,而c2将仅接收来自p2的消息,RabbitMQ正在c1和c2之间循环消息。所以我从p2发送的消息同时被c1和c2接收。

我认为RabbitMQ中的相关性是每个交换多个队列,这里的行为是意想不到的。为什么?

共有1个答案

宿嘉庆
2023-03-14

您可以为每个交换拥有多个队列,这是真的;但是路由键是队列问题,而不是消费者问题。

Rabbit将使用路由键将消息发送到正确的队列;一旦在主题交换上收到消息,消息将被发送到绑定到该特定主题的所有队列。这里只有一个队列,这就是为什么C1和C2都收到消息。

请查看此链接以获取清晰的示例。

如果需要分离C1和C2,则需要将它们绑定到2个不同的队列,而不是同一个队列。

 类似资料:
  • 我有两个队列,我需要对其中一个队列执行以下操作:生产者应该向这个队列发送一条消息,但所有消费者都应该接收它。因此,如果我在这个队列中有5个spring侦听器,那么每个侦听器都应该接收消息,而不是生产者。我这样做是因为我有一个tomcat集群和rabbitmq异步消息,如果我从工作者那里得到响应,我不知道如何将它分派到正确的tomcat节点。所以我决定将所有工作者回复广播给所有tomcat节点。每个

  • 在队列选项卡的rabbitMQ web界面上,我看到了“概述”面板,我在其中找到了以下内容: 排队消息: 准备好了 未确认 总数 我猜“总数”是多少。但什么是“准备就绪”和“未确认”?“准备好了”——传递给消费者的信息?“未确认”-? 消息费率: 发表 交付 重新交付 承认 这些信息是什么?尤其是“重新交付”和“确认”?这是什么意思?

  • RabbitMQ在下列情况下会循环分发消息吗? RabbitMQ配置: 交换类型-主题 路由密钥-通知# 制片人正在将消息推送到上面的交流中,并遵循以下不同的主题 - notify.log.# , notify.status.#, notify.priceChange.# 有4个消费者在不同的服务器上运行。 > 3个消费者在负载均衡器下执行相同的处理并在同一应用程序的不同实例上运行。(他们想消费生

  • 我运行生产者,它生成N条消息,我在仪表板上看到它们。当我运行接收器时,它会接收来自队列的所有消息,并且队列为空。 我需要有多个生产者生成消息到同一个队列。多个客户从队列中接收消息。消息将被队列TTL删除。但是现在第一个接收者从队列中获取所有消息。我怎么能做到这一点?

  • 我刚刚开始使用RabbitMQ和AMQP。 我有一个消息队列 我有多个消费者,我想用相同的消息做不同的事情。 RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用,负载在每个消费者之间分散。这的确是我目击的行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这里有一个消费者: 如果我启动消费者两次,我可以看到每个消费者都在以循环行为消费交替消息。

  • null 谁能给我一个向RabbitMQ发送消息的标准程序的例子。我正在使用Spring Boot,也可以使用它的特性。