如何定义Spring Integration errorChannel?

时间:2017-09-27 16:31:29

标签: java spring apache-kafka spring-integration

在之前的Spring集成应用程序中,我能够订阅到应用程序errorChannel,我发送的失败邮件将在我的(预定义的)中结束处理程序。

但是,现在我尝试在更大的应用程序中实现相同的模式,该模式具有预先存在的入站设置,并且我无法再接收errorChannel

对我来说最令人震惊的是:

<int:publish-subscribe-channel id="errorChannel" task-executor="errorChannelExecutor"/>

当我开始使用此应用程序时,我不再看到以下令人放心的消息:

No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
Adding {logging-channel-adapter:o.s.i.errorLogger} as a subscriber to the 'errorChannel' channel
Channel'o.s.c.s.C.errorChannel' has 2 subscriber(s).
  1. 您认为int:publish-subscribe-channel是否覆盖 我对应用程序errorChannel?
  2. 的访问权限
  3. 为什么它不再引用日志中的默认errorChannel?
  4. 有没有办法可以定义一个仅与出站连接有关的备用错误通道?

1 个答案:

答案 0 :(得分:1)

使用异步任务执行程序时,执行程序捕获的异常默认发送到名为errorChannel的通道。

如果您定义了这样的通道,它将覆盖默认设置,否则该框架将创建默认设置(订阅它的日志记录适配器未订阅;如果您定义自己的通道,则必须这样做)。

对于消息驱动的入站通道适配器/网关(例如http,amqp等),如果没有下游异步执行程序,如果需要例外,则必须显式设置error-channel属性去那里。