Вопрос:

rabbitmq круговое потребление потребителями сельдерея

rabbitmq celery

190 просмотра

1 ответ

504 Репутация автора

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

Можно ли изменить это поведение так, чтобы работник из сельдерея употреблял его в стиле кругового приема? Т.е. работник сельдерея получает сообщение из очереди 1, затем сообщение из очереди 2 и т. Д., Возвращаясь в очередь 1 только после того, как сообщение было получено из каждой из других очередей.

Спасибо

Автор: chris Источник Размещён: 29.06.2017 11:54

Ответы (1)


0 плюса

1814 Репутация автора

Да, вам нужно уменьшить значение prefetch_countдо 1, чтобы одновременно получалось только 1 сообщение. В Celery вы можете заархивировать это, установив CELERYD_PREFETCH_MULTIPLIERв 1. Вы также можете установить task_acks_late = True, убедитесь, что вы прочитали документацию на обоих.

из документов сельдерея :

Чтобы отключить предварительную выборку, установите для worker_prefetch_multiplier значение 1. Изменение этого параметра на 0 позволит работнику продолжать потреблять столько сообщений, сколько ему нужно.

Автор: istepaniuk Размещён: 12.06.2019 09:28
Вопросы из категории :
32x32