Неподтвержденные сообщения PCF RabbitMQ в очереди

Я использую PCF для запуска приложения с весенней загрузкой. Также использовал сервис PCF RabbitMQ.

Моя проблема в том, что какое-то время сообщение в очереди долгое время было закреплено в неподтвержденном виде, и я заметил, что количество запущенных экземпляров приложения в PCF меньше, чем количество активных потребительских каналов в RabbitMQ.

КроликMQ

ПКФ

У меня также включено автомасштабирование, которое автоматически увеличивает/уменьшает масштаб экземпляра приложения в зависимости от примененного правила.

Мне не удалось воспроизвести проблему, так как в клиентском приложении нет журналов ошибок, и единственное решение, которое я сделал, — это перезапустить приложение в PCF. Я также пытался принудительно убить приложение, и кажется, что потребительский канал также уничтожен.

Любая помощь или предложение, что я могу искать? Я использовал поток Spring Cloud для своего потребительского приложения и очень простую конфигурацию в файле yml (без dlq, без пользовательского тайм-аута и т. д.)

Заранее спасибо!


person jitd    schedule 18.08.2020    source источник


Ответы (2)


2.0.x больше не поддерживается; однако последней версией 2.0.x является 2.0.14.

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

Вы должны как минимум обновиться до 2.0.14, но желательно до более новой поддерживаемой версии; текущая версия 2.2.10.

Тем не менее, подавляющее большинство подобных проблем вызвано тем, что поток прослушивателя застревает в пользовательском коде; сделайте дамп потока в следующий раз, когда это произойдет.

person Gary Russell    schedule 19.08.2020
comment
Спасибо за ответ, мы будем следить за нашим приложением и в следующий раз получим дамп потока. Надеюсь найти что-нибудь. Также постараемся обновить версию spring-amqp, которую мы используем. - person jitd; 20.08.2020

У нас была похожая проблема, насколько я помню, нам пришлось установить для AutomaticRecoveryEnabled значение false на фабрике соединений кролика, так как между этим и весенним автовосстановлением возник конфликт.

person Dim D    schedule 21.08.2020
comment
Фабрика соединений кролика в версии, которую мы используем, по умолчанию устанавливает для AutomaticRecoveryEnabled значение false. - person jitd; 24.08.2020
comment
Что-то нашел, есть артефакт (spring_auto_reconfiguration-2.XX.X_RELEASE.jar), работающий в PCF вместе с приложением весенней загрузки, которое автоматически настраивает фабрику соединений и делает значение AutomaticRecoveryEnabled истинным. - person jitd; 25.08.2020