Итак, я тестирую RabbitMQ на одном узле. Легко и просто,

  • Один производитель отправляет сообщения в очередь,
  • Несколько потребителей берут задачи из этой очереди.

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

В совокупности потребители не должны принимать из этой очереди более 10 сообщений в секунду.

Есть ли способ настроить RabbitMQ так, чтобы очередь отправляла максимум 10 сообщений в секунду?

0
Cássio Jandir Pagnoncelli 15 Дек 2017 в 16:25

1 ответ

Лучший ответ

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

Насколько я понимаю, вам не следует пытаться налагать какие-либо ограничения на сам Rabbit MQ, вместо этого рассмотрите возможность реализации пула соединений потребителей сообщений, которые смогут обрабатывать не более X сообщений одновременно на стороне клиента. В качестве альтернативы вы можете предоставить какой-то семафор в самом обработчике, но не на самом сервере Rabbit MQ.

0
halfer 3 Фев 2018 в 18:49