Как динамически отменить регистрацию IntegrationFlow в IntegrationFlowContext, если входящий адаптер Feed генерирует исключение? - PullRequest
0 голосов
/ 10 ноября 2018

Я вставил несколько каналов в коллекцию MongoDB.

В приложении Spring Integration я использую входящий адаптер MongoDB для периодического чтения коллекции каналов и проверки, включен ли канал.

Если fedd включен и еще не включен в IntegrationFlowContext, я его регистрирую.

После создания канала IntegrationFlow он периодически читает канал для извлечения статей.

Проблема в том, что, если входящий адаптер канала выдает исключение, например, из-за того, что URL-адрес больше не является допустимым, как я могу перехватить это исключение (нет доступных каналов ошибок) и отменить регистрацию канала IntegrationFlowContext?

Я создал Gist, чтобы раскрыть мою проблему https://gist.github.com/OttoDev/63d31f301bdd777694f4331cab782913

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Добавьте errorChannel к poller, чтобы получить исключение.

Есть два способа отменить регистрацию потока.

  1. Сохраните ссылку на регистрацию и позвоните destroy().
  2. context.remove(flowId) (это то, что делает # 1)
0 голосов
/ 11 ноября 2018

Зачем вам нужно динамически регистрировать его? Достаточно просто обработать блокировку / включение через управление жизненным циклом start () / stop (). В любом случае адаптер входящего канала можно настроить с помощью errorChannel, см. Второй аргумент IntegrationFlows.from().

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