如何以这种方式设置队列所有订阅者获取消息 - Rabbit MQ

时间:2012-02-06 03:02:33

标签: rabbitmq

我正在阅读第二章中的RabbitMQ in Action book,但有一件事让作者感到困惑。您设置了交换并发送消息,两个订阅者正在侦听队列。当第一个消息进入时,第一个订户获得它,并且一旦确认消息就被删除。当下一条消息到达时,它将以循环方式转到下一个侦听器。我想,如果我发送消息,我希望所有订阅者都能得到它。我的理解错了吗?

1 个答案:

答案 0 :(得分:8)

这很简单。如果您希望所有订阅者都获得该消息的副本,则使用通配符绑定创建多个队列。

假设您有一个主题交换,并且您使用路由密钥(如fred.interesting或fred.boring)发布所有消息,那么如果每个订阅者声明一个绑定密钥为fred。*的队列,那么每个队列都将获得每条消息的副本。唯一的问题是如何命名队列,尽管如果你愿意,RabbitMQ可以为你生成唯一的名称。

如果我这样做,我会有一个管理程序进程启动并监视消息使用者进程。主管将为每个消费者进程分配一个队列名称,如fred0001,fred0002,并跟踪哪些名称在起作用。使用这样的指定名称可以更容易地使用管理工具或编写管理和监视脚本。