Конкуренты RabbitMQ, обрабатывающие по 1 сообщению за раз - PullRequest
0 голосов
/ 20 ноября 2018

Аналогично этот вопрос , у нас есть очереди FIFO, и сообщения должны быть обработаны по порядку.Мы хотим, чтобы конкурирующие потребители с разных компьютеров по причинам избыточности и производительности, но только один потребитель на одном компьютере должен обрабатывать сообщение для данной очереди за раз.

Я попытался установить значение предварительной выборки равным 1, но я считаюэто будет работать только при использовании с одной машиной.Возможно ли это по умолчанию с RabbitMQ или нам нужно реализовать нашу собственную блокировку?

1 Ответ

0 голосов
/ 20 ноября 2018

При наличии одной очереди с несколькими потребителями невозможно заблокировать одного из потребителей, все они получают сообщения в циклическом порядке.

RabbitMQ работает над этой функцией : Ввести опцию, чтобы активным был только один одновременный потребитель

Вы могли видеть этот плагин, https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange для распределения нагрузки по разным очередям.

Я попытался установить значение предварительной выборки равным 1

prefetch=1 означает, что потребители принимают одно сообщение за раз.

делаем ли мынеобходимо реализовать нашу собственную блокировку

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

РЕДАКТИРОВАТЬ

Есть также Exclusive Queues https://www.rabbitmq.com/queues.html#exclusive-queues, но note :

Исключительные очереди удаляются, когда их объявленное соединение закрыто или прервано (например, из-зак основной потере соединения TCP).Поэтому они подходят только для конкретного переходного состояния клиента.

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