Независимо от указанного параллелизма слушатель RabbitMQ запускает только один поток для каждого потребителя, если очередь не пуста, но не получает сообщения - PullRequest
0 голосов
/ 02 июля 2019

Я использую Spring Boot 2.1.3 с зависимостью

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

Я настроил одного потребителя Rabbit в своем проекте и попытался установить параллелизм как через application.properties:

spring.rabbitmq.listener.simple.concurrency = 4

и через атрибут параллелизма аннотации @RabbitListener.

В обоих случаях я вижу абсолютно одинаковое поведение (я запускаю приложение Spring Boot в Windows): если прослушиваемая очередь уже содержит сообщения, но в настоящий момент не получает их, только один поток начинает обрабатывать сообщения из очереди.

Если затем я отправляю несколько новых сообщений в очередь, действительно запускаются дополнительные потоки для обработки сообщений (так что их общее число равно 4 в моем случае, как указано).

Есть ли какая-либо дополнительная конфигурация, чтобы начать обработку сообщений, уже находящихся в очереди, которая в данный момент не получает сообщения, указанным числом потоков?

...