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

RabbitMQ:使用单个队列进行主题交换的消息循环分发

佘京
2023-03-14

RabbitMQ在下列情况下会循环分发消息吗?

RabbitMQ配置:

  1. 交换类型-主题
  2. 路由密钥-通知#

制片人正在将消息推送到上面的交流中,并遵循以下不同的主题 -

notify.log.# , notify.status.#, notify.priceChange.#

有4个消费者在不同的服务器上运行。

>

  • 3个消费者在负载均衡器下执行相同的处理并在同一应用程序的不同实例上运行。(他们想消费生产者推送的每条消息)

    他们正在监听带有路由密钥“notify.#”的“notification_queue”。

    剩余的第 4 个使用者正在执行与前 3 个使用者不同的处理,并在不同的服务器(不同的应用程序)上运行。

    它正在侦听附加有路由关键字“notify.log.#”的“log_queue”。

    RabbitMQ是否会在前3个消费者中以循环方式分发消息(第1点)?

    请帮帮忙。

  • 共有1个答案

    易刚捷
    2023-03-14

    是的,消费者的起源点是什么并不重要。当我们有多个消费者在同一个队列上时,分发是循环的,您可以在这里的模拟器中尝试http://tryrabbitmq.com/

     类似资料:
    • 我正在寻求一些关于如何最好地配置我的rabbitMQ交换的建议。 我试着用循环系统的方法来交换话题。每个使用者都有自己的(唯一的)命名队列连接到主题交换。我希望交换为“相同”主题循环消息到每个使用者队列-比如。 我尝试了多个组合,但似乎只能同时将消息传递到使用者队列,这实际上意味着我要处理两次消息,每个使用者一次。 为了清楚起见,我还有一个扇出交换,我用它来“控制”消费者(启动、停止等)。这应该在

    • 生产者可以发送两种不同的消息类型;和(每个消息的内容无关,但假设它们都有一个字段)。每个消息使用的路由密钥分别是和。生产者不依赖默认的Java序列化,而是使用。 使用者有一个队列,该队列使用的路由键绑定到同一个交换。一旦使用,使用者所要做的就是在日志文件中打印每个消息的。为了检索字段的值,需要将JSON有效负载转换为某种对象。 这两个组件之间不共享消息类(和)。使用者的对象在其消息表示中可能有或多

    • 我有两个独立实例(p1、p2)的生产者应用程序和两个独立实例(c1、c2)的消费者应用程序。 生产者p1连接到exchange,主题为t1,队列名称为name1。 使用者c1连接到exchange,主题为t1,队列名称为name1。 生产者p2连接到exchange,主题为t2,队列名称为name1。 使用者c2连接到exchange,主题为t2,队列名称为name1。 我在RabbitMQ GU

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

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

    • 是否有可能为带有“直接”类型的Rabbitmq交换设置一些“默认”队列? 比如,我有一个exchange A,队列Q1、Q2、Q3和QDef。因此,如果使用路由密钥Q1发布某个消息,它将转到Q1。但如果消息使用路由密钥Q4,则它应该转到QDef。若路由密钥不是现有队列的名称,则消息应转到QDef。 有可能做兔子吗?也许交换不应该是“直接”类型,而应该是其他类型? 换句话说。如果某个消费者为某个路由