RabbitMQ сериализует сообщения из очереди с несколькими потребителями

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

Каждый потребитель работает в своем собственном процессе. В очереди много сообщений. Я использую py-amqplib для взаимодействия с RabbitMQ.

Есть предположения?


person Refefer    schedule 08.05.2010    source источник


Ответы (2)


как насчет предварительной выборки (QOS)? в small queueus я создаю видимость параллелизма, объявляя очередь, получая количество сообщений, доступных в настоящее время, присоединяя потребителя, потребляя сообщения, а затем закрывая его после того, как количество сообщений было использовано. Закрытие канала без подтверждения сообщений делает сообщения доступными для других потребителей, достаточно быстро опрашивает очередь, и вы можете получить параллельное решение.

person ebt    schedule 09.08.2010

Refefer, предпочтительная модель AMQP, похоже, представляет собой очередь на подключенного потребителя. Вы должны создать «прямой» обмен и согласовать ключ маршрутизации, который все ваши потребители будут слушать. Затем каждый подключающийся потребитель должен создать исключительную, частную, недолговечную очередь и использовать queue_bind() для подписки своей очереди на сообщения, соответствующие общедоступному ключу маршрутизации на обмене. Благодаря такому расположению мои рабочие могут работать параллельно, а не сериализовать свои операции!

person Brandon Rhodes    schedule 08.06.2011