Оптимальное значение параллелизма для контейнера jms - PullRequest
0 голосов
/ 05 июля 2019
<jms:listener-container container-type="default"
    connection-factory="testConnectionFactory"
    acknowledge="auto"
    concurrency="10">
    <jms:listener destination="test_queue" ref="testRequestHandler" method="getMessage" />
</jms:listener-container>

Итак, у меня есть фабрика соединений jms, определенная с параллелизмом, равным 10, и мой потребитель может одновременно принимать 10 сообщений.Теперь проблема в том, что производитель ставит в очередь сообщения быстрее, чем может потребить потребитель, в результате половина моих сообщений истекает в очереди.

  1. Я могу увеличить TTL сообщений, чтобы они оставались в очереди дольшебез истечения срока действия.
  2. Увеличение значения параллелизма для одновременных потребителей.

Проблема, с которой я сталкиваюсь:

  1. Я не знаю, как увеличить параллелизмзначение повлияет на систему?
  2. До какой величины я могу увеличить ее значение?Является ли концепция похожа на нет потоков из пула потоков?

1 Ответ

1 голос
/ 06 июля 2019

Я думаю, что единственный способ достичь оптимального значения - это:

  • Установление четких целей производительности (например, с точки зрения пропускной способности сообщения).Без четких целей настройка производительности может превратиться в бесконечное упражнение с уменьшением относительных улучшений.
  • Разработка эталона, который имитирует ваш реальный набор данных и среду приложения.
  • Тщательно проводите тест с различныминастройки конфигурации и запись результатов.На этом этапе я настоятельно рекомендую профилировать ваше приложение, чтобы выявить узкие места.Узкое место прояснит, на чем вам следует сосредоточиться при настройке.

Никто в Интернете не сможет просто дать вам оптимальное значение.В работе слишком много переменных.

Наконец, один из вариантов, который вы не перечислили, навязал вашим производителям управление потоком данных, чтобы ограничить количество сообщений, которые они могут посылать, чтобы потребители не отставали, а вы - нет.получить много просроченных сообщений.Большинство современных брокеров сообщений обеспечивают управление потоком, чтобы отталкивать производителей, чтобы они не подавляли их.

...