RabbitMQ: проверка размера очереди от издателя - PullRequest
0 голосов
/ 01 января 2019

Я с удивлением прочитал в документах rabbitmq, что наличие очень больших размеров очереди отрицательно влияет на производительность очереди.У меня есть диспетчер вакансий, который потенциально может поставить в очередь сообщения более 30 тыс. Для пользователей, занятых в работе, и замечал низкую производительность даже после увеличения числа потребителей.Затем я написал код со стороны публикации, чтобы проверить размер очереди, и, если она слишком велика, подождите некоторое время, пока размер очереди не станет меньше.

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

1 Ответ

0 голосов
/ 01 января 2019

Вы правы, что вашему издателю не нужно беспокоиться о размере очереди.Однако программист должен:

  1. Убедитесь, что у вас достаточно аппаратного и / или горизонтального масштаба кластера для обработки объема сообщения.Сообщения 30 КБ не должны быть сложными для одного брокера, если они имеют соответствующий размер.

  2. Убедитесь, что ваши сообщения не превышают 100 КБ.Если они содержат большие двоичные объекты, вы захотите сохранить эти объекты в хранилище данных и только опубликовать указатель на эти ресурсы в своем сообщении.

  3. RabbitMQ имеет функции управления потоком для работы с чрезмерно усердными издателями.Я не уверен, каковы ваши настройки, но вы могли бы настроить их, чтобы вызвать это.Подробнее: https://www.rabbitmq.com/flow-control.html

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...