Разрешить rabbitmq обрабатывать текущее сообщение перед завершением работы

Мое приложение представляет собой микросервис весенней загрузки, прослушивающий очередь Rabbit MQ. В очередь поступают сообщения из разных источников.

Требование состоит в том, что, когда сервер приложений выходит из строя (это может произойти по многим причинам, может быть из-за того, что мы отключили сайт или мы развертываем обновленное программное обеспечение на нашем сервере приложений), мы хотели бы, чтобы очередь обрабатывала текущее сообщение. На данный момент мы теряем сообщение, которое очередь обрабатывает в данный момент. Как я могу этого добиться?


person GGKamal    schedule 23.01.2018    source источник


Ответы (1)


По умолчанию shutdownTimeout составляет 5000 мс; вы можете увеличить его.

Однако вы не должны терять какие-либо сообщения, они должны быть повторно поставлены в очередь (если только вы не используете AcknowledgeMode.NONE (что, как правило, является плохой идеей).

person Gary Russell    schedule 23.01.2018
comment
Гэри, для получения дополнительной информации по этой теме: stackoverflow.com/questions/48328643/ - person Artem Bilan; 24.01.2018
comment
Как говорит @ArtemBilan в последнем комментарии, мы можем только ждать, пока поток слушателя вернется - если вы передадите сообщение другому потоку, мы ничего не сможем сделать; это плохая практика, поскольку сообщение будет подтверждено сразу после передачи обслуживания; вы действительно должны обрабатывать работу над потоком контейнера. - person Gary Russell; 24.01.2018