【问题标题】:How to change Failed Message of Messaging Exception in SpringSpring中如何更改消息异常的失败消息
【发布时间】:2014-01-22 19:00:05
【问题描述】:

我正在使用基于 Spring 集成的组件。该组件接收一些 XML 并用更多内容丰富了该 XML。

但是,如果发生异常,那么我想将接收到的输入 XML 作为失败消息发送,但是在当前场景中,它将保留部分丰富的 XML,因为有失败消息。

有什么方法可以更改 Exception 的失败消息,而后者又被消息异常包装。

【问题讨论】:

标签: java spring error-handling spring-integration


【解决方案1】:

由于情况如此特殊,我们需要查看您的配置,尤其是error-channel 的位置以及您如何丰富 XML。

但是,请记住,Message 是不可变对象,与它的每次交互都会提供一个新消息。但是payload 超出了消息传递的范围,它可能不是一成不变的。如果您的负载的某些属性发生更改,然后您遇到一些异常,您最终会收到带有inbound 消息的ErrorMessage(失败),但负载可能会更改其状态。

看起来是你的情况。

在开始丰富它之前,您应该考虑一些 payload-cloning 变体。 以下是关于此事的一些建议:https://jira.springsource.org/browse/INT-2979

【讨论】:

  • 如果您从一些不可变对象(例如字符串)开始,您可以简单地在标头中引用它(带有<header name="orig" expression="payload"/> 的标头丰富器)。然后,它将作为 failedMessage 上的标头(原始)可用。如果它是一个可变对象,那么这两个地方都会发生变化,所以你需要克隆,正如 Artem 建议的那样。
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 2012-03-09
  • 1970-01-01
  • 2016-12-22
  • 2018-11-23
  • 2017-04-29
  • 1970-01-01
  • 2015-04-15
相关资源
最近更新 更多