Я пытаюсь использовать Spring Integration для пакетного процесса. Существуют определенные шаги, которые отнимают много времени и, следовательно, выиграют от использования QueueChannel с несколькими потребителями, каждый из которых работает в отдельном потоке.
Проблема этого подхода заключается в том, что не существует чистого способа завершить работу приложения после все сообщения были использованы. Я попытался использовать управляющую шину и выключить исполнитель задач, но это работает только в том случае, если вы можете догадаться, к какому времени все сообщения будут израсходованы, и ни одно из них не отправлено в полет, что невозможно.
Есть ли чистый способ? сделать это для пакетного процесса или это просто неправильный вариант использования Spring Integration в?
РЕДАКТИРОВАТЬ:
По существу было бы неплохо, если бы у меня был способ отправить специальное сообщение, которое обозначает одно из событий жизненного цикла, таких как запуск или остановка, который автоматически переносится через всю весну компоненты интеграции. Таким образом, сообщение останова гарантированно достигнет последнего, и если есть способ инициировать shutdown () на бинах, осведомленных о lifecycle , при достижении сообщения остановки.