Как правило, при использовании технологий очереди сообщений, таких как MQ, смысл очереди в том, что отправитель отделен от получателя.Если у вас возникают проблемы с объемами сообщений, то ответ состоит в том, чтобы позволить им стоять в очереди в очереди получателя и обрабатывать их как можно лучше, чтобы не ограничивать отправителя.
Очевидный ответ - ограничить максимумколичество потоков, которые ваши слушатели могут принимать.Я предполагаю, что вы используете какой-то MQ threadpool?Какую платформу вы используете, которая предоставляет неограниченные потоки прослушивателей?
Из вашего описания почти похоже, что у вас запущен какой-то процесс, который - как только он обнаруживает сообщение в очереди - он читает сообщение, запускаетсяновый поток и возвращается и смотрит на очередь снова.Это неправильный подход.
У вас должно быть определенное количество запущенных потоков процессов (начните с одного и увеличивайте по мере необходимости и в пределах вашего сервера), которые читают из самой очереди.Каждый из них откроет очередь в режиме совместного использования и либо получит с ожиданием, либо сделает немедленный переход в спящий режим, если вы получите MQRC 2033 (нет сообщений в очереди).
Надеюсь, это поможет.