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