Можно ли использовать Spring Integration для пакетных процессов с ExecutorChannel или Pollers с исполнителями задач - PullRequest
1 голос
/ 28 марта 2020

Я пытаюсь использовать Spring Integration для пакетного процесса. Существуют определенные шаги, которые отнимают много времени и, следовательно, выиграют от использования QueueChannel с несколькими потребителями, каждый из которых работает в отдельном потоке.

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

Есть ли чистый способ? сделать это для пакетного процесса или это просто неправильный вариант использования Spring Integration в?

РЕДАКТИРОВАТЬ:

По существу было бы неплохо, если бы у меня был способ отправить специальное сообщение, которое обозначает одно из событий жизненного цикла, таких как запуск или остановка, который автоматически переносится через всю весну компоненты интеграции. Таким образом, сообщение останова гарантированно достигнет последнего, и если есть способ инициировать shutdown () на бинах, осведомленных о lifecycle , при достижении сообщения остановки.

1 Ответ

0 голосов
/ 29 марта 2020

закрыть приложение после того, как все сообщения были использованы

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...