Как лучше всего безопасно завершить Java-приложение с запущенными потребителями RabbitMQ

У нас есть автономное java-приложение, выполняющее некоторую фоновую обработку на машине Debian. Задания, которые он должен обрабатывать, отправляются через сообщения RabbitMQ.

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

Мы попытались отправить потребителю сообщение «SHUTDOWN», но не можем закрыть очередь или канал ?! Замораживает приложение! Или есть другое решение, в котором мы могли бы, например, автоматически выключить приложение, не выполняя команду kill в Linux?

Спасибо, чтобы поделиться своим опытом.

Приветствую

8
задан Toni Van de Voorde 14 July 2011 в 20:43
поделиться