RabbitMQ单一消费者,从多个队列消费消息。

3

在我的应用程序中,我有一个系统可以将消息发布到多个队列。例如,我有3个RabbitMQ队列,消息被发布到这3个队列。目前我有3个消费者用于这3个队列。现在我需要进行修改,我想为两个队列使用单个消费者。我们可以为多个队列使用一个订阅者吗?如何在RabbitMQ中实现这一点?


可能是如何为rabbitMQ实现单消费者多队列模型的重复问题。 - ozahorulia
使用enqueue库非常容易实现,具体请参考 https://github.com/php-enqueue/enqueue-dev/blob/master/docs/quick_tour.md#consumption - Maksim Kotlyar
2个回答

0

一种实现方式是使用channel.basicConsume(QUEUE_NAME,,);(对于Java,其他语言也有类似情况),并指定您要消费的队列。因此,在这种情况下,您可以使用两个这样的命令,指定您要从中消费的2个或更多队列。

对于php,代码看起来像这样:

$channel->basic_consume('QUEUE_NAME', '', false, true, false, false, $callback);

只需为您想要从中消费的队列调用它即可。


0
据我所知,同时使用同一通道消费多个队列是不可能的。至少在我尝试过时没有成功。 此外,跨不同线程使用同一通道可能不安全。
最好为每个队列创建一个单独的通道进行消费。
通道是足够轻量级的实体 - 它使用相同的TCP连接。通道的主要目的是通过同一TCP连接复用不同的查询。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接