Как реализовать приоритетные очереди в RabbitMQ / pika - PullRequest
5 голосов
/ 12 октября 2011

Я ищу реализацию очереди приоритетов с RabbitMQ. Список рассылки рекомендует использовать несколько очередей, каждая из которых представляет свой уровень приоритета.

Мой вопрос: как вы опрашиваете несколько очередей в некотором порядке приоритетов, используя pika (или, возможно, какую-то другую библиотеку python)?

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Я не думаю, что есть способ сделать это наивно на уровне потребителей с помощью pika, поскольку все потребители по умолчанию имеют одинаковый приоритет.

Что я мог бы сделать, чтобы решить эту проблему, так это иметь две очереди, предложенные в списке рассылки, каждая из которых имеет своего собственного потребителя. В обратном вызове потребителя для каждого потребителя вместо непосредственного обращения с сообщением я помещаю его в очередь с приоритетами, а затем вызываю функцию, которая читает сообщение с самым высоким приоритетом из очереди и обрабатывает его.

Другой вопрос с аналогичным ответом.

2 голосов
/ 30 июля 2014

Если вы наткнетесь на этот вопрос после того, как он будет принят. RabbitMQ имеет плагин, который позволяет настроить одну очередь с приоритетами: https://github.com/rabbitmq/rabbitmq-priority-queue

...