在我的应用程序中,我有一个系统可以将消息发布到多个队列。作为一个例子,我有3个RabbitMQ队列,并且消息被发布到这3个队列。目前我有3个消费者为这3个队列。现在我需要做一个修改,我希望有两个队列的单个消费者。我们可以将一个用户用于多个队列。怎么能在RabbitMQ中完成?
答案 0 :(得分:0)
这样做的一种方法是使用 channel.basicConsume(QUEUE_NAME ,,); (对于Java,类似其他语言的情况)并指定您想要的队列消耗。因此,在这种情况下,您可以使用两个这样的命令来指定要使用的2个或更多队列。
在php的情况下,代码看起来像这样:
$ channel-> basic_consume(' QUEUE_NAME','',false,true,false,false,$ callback);
只需要为您想要使用的队列调用它。
答案 1 :(得分:0)
AFAIK无法使用同一个频道同时使用多个队列。至少当我试图这样做时,对我来说不起作用。 另外,在不同的线程上使用相同的通道可能并不安全。
最好创建一个单独的通道来从每个队列中使用。
频道它是足够轻量级的实体 - 它使用相同的tcp连接。通道的主要目的 - 通过相同的tcp连接复用不同的查询。