Сообщения Spring boot 2.0 доставляются с Rabbit mq, но не доходят до кода Java - PullRequest
0 голосов
/ 26 октября 2018

Мы используем мощный потребитель кролика mq, построенный на основе Spring boot 2.0 и использующий интегрированную среду Spring.Количество предварительных выборок установлено равным 150, и число одновременных потребителей не равно 4.Все работало нормально, пока однажды некоторые сообщения не были сохранены в rmq.Когда мы перезапускаем наш java-сервис, неупакованные сообщения обрабатываются, но проблема снова появляется через некоторое время.Может кто-нибудь помочь с этой странной проблемой.Прямо сейчас мы настроили задание cron для перезапуска службы через 1 час, чтобы сообщения не оставались без ответа.

Версия с пружинной загрузкой PS 2.0, версия rabbit mq: 3.7.7

1 Ответ

0 голосов
/ 26 октября 2018

Как правило, для этого есть две возможные причины - потоки слушателя «застряли» в пользовательском коде (это было проблемой в большинстве случаев) или клиентская библиотека rabbitmq имеет autoRecoveryEnabled=true;в общем, Spring AMQP устанавливает его в значение false, но в некоторых случаях его можно установить в значение true, и в некоторых угловых случаях потребители оставались «висящими».Spring AMQP не нуждается в этом, потому что он имеет свои собственные механизмы восстановления соединения.

Для первого случая возьмите дамп потока, чтобы увидеть, что делают потоки.

Для второго случая:обновить до последней весенней версии amqp (2.0.8 - boot 2.0.6) или 2.1.0 (которая будет версией в boot 2.1).

...