У нас есть установочная установка IBM MQ v8 с 1 большой непостоянной очередью и множеством потребителей (50+) в этой очереди.Большое количество потребителей необходимо для обработки объема сообщений, публикуемых в очереди.
Теперь мы заметили, что администратор очередей не распределяет сообщения равномерно по потребителям X.Несколько потребителей получают до 300 сообщений в минуту, тогда как многие другие получают только несколько сообщений в минуту (<10).И в очереди много сообщений, и глубина очереди постоянно увеличивается.Процессор и память на стороне потребителя не являются проблемой, использование обоих составляет <50%.</p>
Может кто-нибудь объяснить, как администратор очередей IBM MQ распределяет сообщения по нескольким потребителям?И можно ли повлиять на это как на сервере, так и на стороне потребителя, чтобы сообщения распределялись более равномерно по доступным потребителям?
Добавлено после ответа Марка Тейлорса
Проблема, с которой мы сталкиваемся, состоит в том, что в очередь добавляется> 10.000 сообщений в минуту, и мы не можем использовать их достаточно быстро.Наша текущая настройка заключается в том, что у нас есть простой потребитель, который работает в контейнере Docker, и мы масштабируемся, запустив несколько контейнеров.Запуск 12 потребителей (контейнеров Docker) действительно увеличивает общую пропускную способность, запуск более 50 потребителей не увеличивает пропускную способность.Каждый потребитель прост:
1. connect to queue manager
2. Connect to queue
3. While true
- Get message from queue
- Process message (commenting this out does not increase overall performance)
Как мы можем добиться большей производительности при потреблении сообщений?Поможет ли, например, если в одном контейнере мы подключаемся к менеджеру очередей один раз, а затем несколько потоков используют один и тот же диспетчер очереди для подключения к очереди и получения сообщений?Или мы даже должны повторно использовать очередь в нескольких потоках?
С уважением,
Gero