Как реализуется приоритет в RabbitMQ - PullRequest
0 голосов
/ 25 февраля 2020

Как скрытая очередь превращает очередь FIFO в очередь с приоритетами распределенным способом? Они на самом деле обмениваются базовой структурой данных, или это "взломанное" исправление

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Базовыми структурами данных являются несколько очередей, каждая из которых имеет свой приоритет. Каждая очередь представляет собой процесс Erlang VM. Вот почему иметь более 10 или около того приоритетов не рекомендуется, так как страдает производительность. Если ваша нагрузка достаточно мала, это может быть приемлемо.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы по StackOverflow.

0 голосов
/ 25 февраля 2020

Когда сообщение публикуется с заголовком priority, сообщение с более высоким значением приоритета помещается в начало очереди. Это делается путем обмена сообщениями в очереди. Все это делается, когда сообщение ожидает отправки в очередь. Чтобы позволить RabbitMQ фактически расставить приоритеты для сообщений, установите basic.qos потребителя как можно ниже. Таким образом, если потребитель подключается к пустой очереди, чья basic.qos не установлена ​​и к которой сообщения впоследствии публикуются, сообщения могут вообще не тратить время на ожидание в очереди. В этом случае приоритетная очередь не получит никакой возможности расставить приоритеты.

Ссылка: https://www.rabbitmq.com/priority.html

...