Как мне убедиться, что Spring JMS одновременно использует сообщения? - PullRequest
0 голосов
/ 19 июня 2020

Я использую Spring-JMS для получения сообщений из очередей. Я настроил одновременного потребителя как 5 и максимального количества одновременных потребителей как 10, а затем pu sh более 1k сообщений в очереди. Я мог видеть, что запущено 5 потребителей DML C, но в то время я мог видеть, что только 1 потребляет сообщения, а все остальные находятся в состоянии ожидания. Есть ли какая-то конфигурация, которую мне не хватает, чтобы все 5 DML C начали использовать сообщения. Я следую подходу, приведенному в ссылке ниже, так как у меня есть несколько очередей, в которых я хочу зарегистрироваться. https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jms -annotated-programmati c -registration .

Использование кода ниже для регистрации нескольких очередей

 queues.foreach( queue -> {
     SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
            endpoint.setId("myJmsEndpoint"+counter++);
            endpoint.setDestination(queue);
            registrar.registerEndpoint(endpoint,defaultJMSListenerCOnnectionFactory);
    });

1 Ответ

0 голосов
/ 19 июня 2020

Если вы используете ActiveMQ, есть настройка предварительной выборки, которая по умолчанию равна 1k. Это означает, что сообщения будут отправляться потребителям по 1 КБ за раз. Вы можете добавить:

?jms.prefetchPolicy.all=1

к URL вашего брокера клиента. Это отключит предварительную выборку.

...