Rabbitmq 如何设置队列以使所有订阅者都能获得消息-Rabbit MQ

Rabbitmq 如何设置队列以使所有订阅者都能获得消息-Rabbit MQ,rabbitmq,Rabbitmq,我正在读《兔子的行动》一书,仍然在第二章,但有一件事作者说得让我困惑。您设置了一个exchange并发送了一条消息,两个订阅者正在侦听队列。当第一条消息传入时,第一个订阅者将获得它,消息被确认后将被删除。当下一条消息到达时,它以循环的方式传递给下一个侦听器。我想,如果我发送消息,我希望所有订户都能收到。我的理解错了吗?这很简单。如果希望所有订阅者都获得消息的副本,请使用通配符绑定创建多个队列 假设您有一个主题交换,并且您使用诸如fred.interest或fred.boring这样的路由键发布所

我正在读《兔子的行动》一书,仍然在第二章,但有一件事作者说得让我困惑。您设置了一个exchange并发送了一条消息,两个订阅者正在侦听队列。当第一条消息传入时,第一个订阅者将获得它,消息被确认后将被删除。当下一条消息到达时,它以循环的方式传递给下一个侦听器。我想,如果我发送消息,我希望所有订户都能收到。我的理解错了吗?

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

假设您有一个主题交换,并且您使用诸如fred.interest或fred.boring这样的路由键发布所有消息,那么如果每个订阅者使用fred.*的绑定键声明一个队列,那么每个队列将获得每个消息的副本。唯一的问题是如何命名队列,尽管RabbitMQ可以根据需要为您生成唯一的名称

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

我会(而且确实会)配置我的订阅者,以便他们各自负责使用适当的路由密钥注册自己的队列。将它们设置为自删除队列可以确保一旦消费者的连接丢失,队列也会被拆除。看看这个,