Любой способ получить статус потока (например, работает, остановлен, остановлен за исключением) с интеграцией Spring? - PullRequest
0 голосов
/ 28 мая 2020

Недавно я пытался создать сервис отдыха для создания, запуска и остановки потока интеграции (который читал RSS-канал и печатал на консоли), и мне удалось этого добиться.

Но моим следующим требованием было получить статус (например, работает, остановлен, остановлен с исключением) из уже запущенного потока, и я не смог этого сделать, я не вижу никакого метода, связанного с этим в «IntegrationFlowRegistration».

Кроме того, есть ли способ сохранить "IntegrationFlow" в СУБД, например MySql, и т. Д. c?

1 Ответ

0 голосов
/ 28 мая 2020

Ну, поток сам по себе является просто логическим контейнером для компонентов, которые он соединяет. Хотя мы действительно можем каким-то образом получить доступ ко всем этим компонентам в одном IntegrationFlow, это не означает, что все ваше решение содержит только один IntegrationFlow. Соединение компонентов из разных IntegrationFlow вполне нормально, поскольку во время выполнения они полностью не связаны с созданным IntegrationFlow. Эти компоненты среды выполнения идентичны после любого анализа конфигурации, который у нас есть в структуре: XML, Java DSL, Kotlin DSL или просто Java и конфигурация аннотаций. Вы даже можете создать все bean-компоненты вручную, но во время выполнения это будет решение EIP.

Я пытаюсь сказать, что неправильно пытаться найти решение для всего состояния потока. Или вам следует проконсультироваться с каким-то отдельным компонентом (например, упомянутым RSS), или у вас должен быть какой-то отдельный компонент для отслеживания такого настраиваемого состояния.

См. Lifecycle контракт. Большая часть Spring Integration реализует его, поэтому вы можете проверить его isRunning(), когда вам нужно. Фактически, даже StandardIntegrationFlow реализует это, но вы не должны полностью полагаться на него, потому что ваше окончательное решение может состоять из нескольких потоков или многих независимых компонентов.

Нет ничего похожего на stopped with exception - мы не не останавливают компоненты из-за ошибки. Вместо этого вы можете включить метрики и проверить канал или обработчики success и failure количество отправлений: https://docs.spring.io/spring-integration/docs/5.3.0.RELEASE/reference/html/system-management.html#metrics -management

...