Задать вопрос
DoctorX
@DoctorX
Веб разработчик

Как отправить сигнал о завершении всем воркерам в RabbitMq?

Имею большую конченую очередь в бд из задач.
Раз в минуту воркер-менеджер читает из бд пачку задач и отправляет их в очередь rmq (если в ней меньше определённого количества элементов).
К этой очереди подключается 300 процессов-воркеров которые берут по 1 задаче и выполняют их пока в очереди не станет пусто.
i.imgur.com/dALfdDs.png

Понадобилось добавить возможность безопасно и быстро остановить все воркеры довольно логично разослать им сообщение на остановку через тот-же rmq. Но непонятно как это реализовать ведь воркеры продолжат делать задачи из общей очереди и сообщению об остановке придётся ждать пока очередь не опустеет.
Возможно я неправильно собрал это дело?
  • Вопрос задан
  • 281 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
обычно воркеры сидят под супервайзером. гасить в нем.

у мну runit за ними следит
прибиваю все символьные ссылки в /etc/service/ и все померли
надо запустить проставляю ссылки скриптом снова
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы