Как настроить очередь таким образом, чтобы все подписчики получали сообщения - Rabbit MQ
Я читаю RabbitMQ в книге действий, все еще в главе 2, но одна вещь, которую авторы говорят, озадачивает меня. Вы настраиваете обмен и отправляете сообщение, два абонента слушают очередь. Когда приходит первое сообщение, первый подписчик получает его, и сообщение удаляется после его подтверждения. Когда приходит следующее сообщение, оно отправляется следующему слушателю в циклическом порядке. Я думал, что если я отправляю сообщение, я хочу, чтобы все подписчики получили его. Мое понимание неверно?
1 ответ
Это просто Если вы хотите, чтобы все подписчики получили копию сообщения, создайте несколько очередей с подстановочными знаками.
Предполагая, что у вас есть обмен темами, и вы публикуете все сообщения с ключом маршрутизации, таким как fred.interesting или fred.boring, тогда, если каждый подписчик объявляет очередь с ключом привязки fred.*, Тогда каждая очередь получит копию каждое сообщение Единственная проблема заключается в том, как назвать очереди, хотя RabbitMQ может генерировать уникальные имена для вас, если вы хотите.
Если бы я делал это, у меня был бы процесс супервизора, который запускает и контролирует процессы потребителя сообщений. Супервизор назначит каждому клиентскому процессу имя очереди, например, fred0001, fred0002, и будет отслеживать, какие имена находятся в игре. Использование указанных имен, подобных этому, упрощает использование инструментов управления или написание сценариев управления и мониторинга.