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

How to dynamically unregister IntegrationFlow of IntegrationFlowContext if Feed inbound adapter throw an exception?

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

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

如果 fedd 已启用但尚未在 IntegrationFlowContext 中,我会注册它。

创建提要 IntegrationFlow 后,它会定期读取提要以提取文章。

问题是,如果 Feed 入站适配器抛出异常,例如因为 URL 不再有效,我如何捕获此异常(没有可用的错误通道)并取消注册 Feed IntegrationFlowContext 的?

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

为什么要动态注册呢?通过 start()/stop() 生命周期控制足以处理 disable/enable 。无论如何,可以使用 errorChannel 配置入站通道适配器,请参阅 IntegrationFlows.from().

的第二个参数

poller 中添加一个 errorChannel 以获得异常。

注销流量的方法有两种。

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