【问题标题】:How to define the Spring Integration errorChannel?如何定义 Spring Integration errorChannel?
【发布时间】:2018-03-09 05:47:07
【问题描述】:

在之前的 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. 为什么不再引用日志中的默认errorChannel?
  3. 有没有一种方法可以定义一个alternate 错误通道,只关注出站连接?

【问题讨论】:

  • 是的,它使用 pub-sub 频道覆盖了默认的 errorChannel。重命名pub-sub,你应该很好。想试试吗?
  • 问题是errorChannel 已经定义了,所以我不能简单地在 spring 集成中重命名它。除非有办法为错误通道使用不同的名称,特别是在应用程序的出站部分?
  • 我的意思是重命名您的 pub-sub 频道(您问题中的频道是您定义的频道,对吗?) - 不是重命名默认的 errorChannel。
  • 感谢您的回复 - pub-sub 频道是预先存在的入站代码。我通常会订阅我的出站部分的默认频道。还有其他想法吗?

标签: java spring apache-kafka spring-integration


【解决方案1】:

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

如果你定义了这样一个通道,它会覆盖框架创建的默认值(订阅它的日志适配器不会被订阅;如果你定义了你自己的通道,你必须这样做)。

对于消息驱动的入站通道适配器/网关(例如 http、amqp 等),没有下游异步执行器,如果您希望异常发生,则必须显式设置 error-channel 属性.

【讨论】:

  • 所以它被默认称为errorChannel,但是有办法使用不同的名称吗?我们正在使用 Kafka,特别是 KafkaProducerMessageHandler 用于我们的出站消息流。我们可以简单地重命名那里的errorChannel吗?
  • 否;无论启动流程,错误通道都会继续(例如网关、入站通道适配器);出站异常被捕获,ErrorMessage 被发送到错误通道。或者您可以将ExpressionEvaluatingRequestHandlingAdvice 添加到出站适配器,但大多数情况下,下游问题在入站端点上处理。
  • 能否请您指出ExpressionEvaluatingRequestHandlingAdvice 的示例或一些文档?我认为如果我使用这种技术,我将能够将入站和出站错误处理完全分开。
  • retry-and-more sample 有一个使用 XML 配置的示例。如果您使用 Java 配置,adviceChain@ServiceActivator 上;如果使用 Java DSL,建议是关于端点规范。发送到失败通道的ErrorMessage 有一个异常有效负载,其中包含失败的消息、原因和表达式的评估结果。
  • 实际上我快速查看了代码,但我没有看到对ExpressionEvaluatingRequestHandlingAdvice 的任何引用。你确定你有正确的示例文件吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多