Spring AMQP несколько потоков, вызывающих прослушиватель сообщений - PullRequest
0 голосов
/ 16 июня 2020

У меня есть DirectRabbitListenerContainer (созданный с помощью DirectRabbitListenerContainerFactory), где у меня есть настройка MessageListener с помощью MessageListenerAdapter. разные потоки.

[2020-06-16 11:12:45,910] INFO com.something.MyMsgListener [pool-1-thread-3] Message ID:bca8cdcc-385a-4847-bd15-50e8936 [2020-06-16 11:12:45,910] INFO com.something.MyMsgListener [pool-1-thread-8] Message ID:bca8cdcc-385a-4847-bd15-50e8936

Это вызывает много проблем для приложения, которое я пишу. Мне интересно, может ли кто-нибудь указать, какой элемент конфигурации вызывает это (или может предотвратить это). Что касается производителя сообщений, я знаю, что только одно сообщение было создано и отправлено в RabbitMQ. Иногда одно и то же сообщение обрабатывают до 6 потоков. Иногда проблема уходит. У меня нет четкого объяснения asp, почему это происходит ... Любая помощь будет принята с благодарностью.

Спасибо!

1 Ответ

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

Это невозможно, если только прослушиватель, вызываемый pool-1-thread-3, не генерирует исключение и сообщение не доставляется повторно.

Нет гарантии, что повторная доставка будет доставлена ​​в тот же поток, поскольку он использует управляемый пул потоков. клиентом amqp.

При использовании SimpleMessageListenerContainer и concurrency=1 повторная доставка всегда будет происходить в одном потоке.

...