如果Feed入站适配器引发异常,如何动态注销IntegrationFlowContext的IntegrationFlow?

时间:2018-11-10 16:59:28

标签: rss spring-integration

我在MongoDB集合中插入了一些提要。

在我的Spring Integration应用程序中,我使用MongoDB入站适配器定期读取提要集合,并检查是否启用了提要。

如果启用了fedd,但尚未在IntegrationFlowContext中启用,则我将其注册。

一旦创建了提要IntegrationFlow,它就会定期读取提要以提取文章。

问题是,如果Feed入站适配器引发异常(例如,由于URL不再有效),我如何捕获此异常(没有可用的错误通道)并注销IntegrationFlowContext的feed? >

我创建了要点来揭露我的问题https://gist.github.com/OttoDev/63d31f301bdd777694f4331cab782913

2 个答案:

答案 0 :(得分:0)

为什么需要动态注册?足以通过start()/ stop()生命周期控制来处理禁用/启用。无论如何,可以使用errorChannel配置入站通道适配器,请参见IntegrationFlows.from()的第二个参数。

答案 1 :(得分:0)

errorChannel上添加poller以获取异常。

有两种注销流程的方法。

  1. 保留对注册的引用,并在其上调用destroy()
  2. context.remove(flowId)(这就是#1的作用)