Spring 集成 - 消息驱动的通道适配器 - 转换器错误句柄、原始消息

Spring Integration - Message Driven Channel Adapter - transformer error handle, original message

我在处理 spring 集成流程中的错误时遇到问题。流程是这样工作的,我的入口点是消息驱动的通道适配器 -> 路由器 -> 过滤器 -> 转换器 -> 服务激活器 -> 数据库。我已经使用自定义消息侦听器容器编写了自己的错误处理程序,它按预期工作,但是当我遇到异常时我需要将原始消息保存到数据库中。

问题是,当我从数据库中得到一个异常时,错误处理策略接收到一个MessageHandleException,但是异常中的failedMessage是消息转换后的,这种情况下如何获取原始消息?

感谢您的帮助。

您应该在 message driven channel adapter:

之后使用 header-enricher
<int:header-enricher>
   <int:header name="originalPayload" expression="payload"/>
</int:header-enricher>

并在 own error handler 中使用 failedMessage 中的 header。