我成功设置了一个 Topic Exchange,并且能够一次向多个消费者发送消息。
我还想向竞争的消费者传递消息并继续使用主题交换。我读到使用相同的队列名称可以让消费者竞争消息。但是,我可能会弄错,因为我无法让它发挥作用。
为同一主题的多个侦听器设置:
如何将竞争消费者设置为同一主题?
主题交换甚至可能吗?
谢谢。
让我们先回顾几点。
首先,请记住,在 RabbitMQ 中,您总是从队列中消费。交易所只是您的门户,您不能直接从中消费。
其次,主题交换允许将队列与路由密钥“模式”绑定。因此,术语主题在“主题交换”的上下文中有效。
现在这就是我从你的问题中了解到的:
多个消费者/相同的路由键:这是您希望多个消费者都使用相同路由键(或在主题交换的情况下相同的路由键模式)的消息的地方。这实际上是可行的。只需这样做:
将会发生的是 RabbitMQ 将以循环方式为您的消费者进行负载平衡。这意味着所有消费者都将从同一个队列中消费。但请记住,在这种情况下,理论上可能会多次传递单个消息。
您所做的是创建多个队列,每个队列有一个消费者。这意味着进入交换的每条消息都将在所有队列中复制。最终结果是一条消息被多次处理。