Правильное использование SpringRabbit DirectMessageListenerContainer и свойства setConsumersPerQueue - PullRequest
0 голосов
/ 30 января 2020

Я использую DirectMessageListenerContainer для прослушивания отдельных очередей, так как он создает потребителя на очередь , предотвращая голодание очереди, если сообщения на «queue1» обрабатывают некоторое время, а сообщения на «queue2» "быстро обрабатываются. Я запутался в методе DirectMessageListenerContainer.setConsumersPerQueue . Значение по умолчанию равно 1, если смотреть на исходный код.

При каких условиях необходимо увеличить его до значения больше 1? Если оставить значение по умолчанию 1, выполняется ли многопоточная обработка сообщений для данной очереди, если размер выборки больше 1?

    DirectMessageListenerContainer
        listenerContainer =
        new DirectMessageListenerContainer(connectionFactory);

    listenerContainer.setConsumersPerQueue(10);
    listenerContainer.addQueueNames("queue1","queue2");

1 Ответ

0 голосов
/ 30 января 2020

Это для увеличения параллелизма; например, если ваш слушатель работает медленно и вам не нужно упорядочивать сообщения, вы можете назначить несколько потребителей одной и той же очереди и обрабатывать сообщения параллельно. В зависимости от количества сообщений, вам может потребоваться уменьшить количество предварительных выборок, чтобы один потребитель не «захватывал» все сообщения во время запуска.

Размер предварительной выборки не влияет на параллелизм; это просто так; упреждающей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...