RabbitMQ - 话题交换和竞争消费者

Rai*_*ine 2 .net c# rabbitmq

我成功设置了一个 Topic Exchange,并且能够一次向多个消费者发送消息。

我还想向竞争的消费者传递消息并继续使用主题交换。我读到使用相同的队列名称可以让消费者竞争消息。但是,我可能会弄错,因为我无法让它发挥作用。

为同一主题的多个侦听器设置:

  • 声明主题交换
  • 对于每个侦听器,声明一个具有自动生成名称的新队列
  • 使用给定的主题路由键将此队列绑定到上述交换

如何将竞争消费者设置为同一主题?

主题交换甚至可能吗?

谢谢。

Ami*_*n J 6

让我们先回顾几点。

首先,请记住,在 RabbitMQ 中,您总是从队列中消费。交易所只是您的门户,您不能直接从中消费。

其次,主题交换允许将队列与路由密钥“模式”绑定。因此,术语主题在“主题交换”的上下文中有效。

现在这就是我从你的问题中了解到的:

多个消费者/相同的路由键:这是您希望多个消费者都使用相同路由键(或在主题交换的情况下相同的路由键模式)的消息的地方。这实际上是可行的。只需这样做:

  1. 声明您的主题交换
  2. 声明一个有名字的队列
  3. 使用所需的路由键模式将该队列绑定到您的主题
  4. 创建多个消费者并让他们收听同一个队列。

将会发生的是 RabbitMQ 将以循环方式为您的消费者进行负载平衡。这意味着所有消费者都将从同一个队列中消费。但请记住,在这种情况下,理论上可能会多次传递单个消息。

您所做的是创建多个队列,每个队列有一个消费者。这意味着进入交换的每条消息都将在所有队列中复制。最终结果是一条消息被多次处理。