Как ограничить доставку сообщений потребителям?
Я ищу очередь сообщений со встроенной функцией регулирования. Вариант использования: рабочий пул получателей может принимать много сообщений, но служба, от которой зависят работники, может не справиться с нагрузкой. Сократить рабочий пул невозможно, поскольку рабочие экземпляры обрабатывают различные типы сообщений.
Таким образом, функция, которую я ищу, регулируется в зависимости от темы. Скажи тему T
Я хочу, чтобы очередь принимала как можно больше сообщений от производителей, но ограничивала спрос потребителей по теме T
скажем, доставить только 5 сообщений в минуту.
1 ответ
Для Java могут работать следующие решения, они также должны быть доступны для узла
- Вы можете регулировать сообщения, контролируя
poll()
звонки. Попробуй спать нить между звонком
poll()
Попробуйте использовать больше времени ожидания в
poll()
и использовать следующее свойствоMAX_POLL_RECORDS_CONFIG
контролировать, сколько сообщений вы будете
получить в одном опросе.
Если вы используете IronMQ, вы можете ограничивать количество сообщений, если используете очереди "pull". Эту функцию нужно будет сделать вручную из кода пользователя. Если бы вы использовали "push" очереди, вы не смогли бы регулировать количество сообщений. Однако ваши потребители будут получать сообщения с максимальной скоростью. Вот ссылка, описывающая очереди push и pull: https://dev.iron.io/mq/3/reference/push_queues/index.html
Если у вас есть дополнительные вопросы, обратитесь в службу поддержки Iron.io через чат, электронную почту или по телефону.