Как настроить очередь таким образом, чтобы все подписчики получали сообщения - Rabbit MQ - PullRequest
5 голосов
/ 06 февраля 2012

Я читаю RabbitMQ в книге действий, все еще в главе 2, но одна вещь, которую авторы говорят, озадачивает меня.Вы настраиваете обмен и отправляете сообщение, два абонента слушают очередь.Когда приходит первое сообщение, первый подписчик получает его, и сообщение удаляется после его подтверждения.Когда приходит следующее сообщение, оно отправляется следующему слушателю в циклическом порядке.Я думал, что если я отправляю сообщение, я хочу, чтобы все подписчики получили его.Мое понимание неверно?

1 Ответ

8 голосов
/ 06 февраля 2012

Это просто. Если вы хотите, чтобы все подписчики получили копию сообщения, создайте несколько очередей с подстановочными знаками.

Предполагая, что у вас есть обмен темами, и вы публикуете все сообщения с ключом маршрутизации, таким как fred.interesting или fred.boring, тогда, если каждый подписчик объявляет очередь с ключом привязки fred. *, Тогда каждая очередь получит копия каждого сообщения. Единственная проблема заключается в том, как называть очереди, хотя RabbitMQ может генерировать уникальные имена для вас, если хотите.

Если бы я делал это, у меня был бы процесс супервизора, который запускает и контролирует процессы потребителя сообщений. Супервизор назначит каждому клиентскому процессу имя очереди, например fred0001, fred0002, и будет отслеживать, какие имена находятся в игре. Использование указанных имен, подобных этому, упрощает использование инструментов управления или написание сценариев управления и мониторинга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...