我在弹簧集成流程中处理错误时遇到问题。流程是这样的,我的入口点是消息驱动的通道适配器 - >路由器 - >过滤器 - >变压器 - >服务激活器 - >数据库。我使用自定义消息侦听器容器编写了自己的错误处理程序,它按预期工作,但是当我得到异常时,我需要将原始消息保存到数据库中。
问题在于,当我从数据库中获取异常时,错误句柄策略会重新发出MessageHandleException,但异常中的failedMessage是转换的消息,在这种情况下如何获取原始消息?
感谢您的帮助。
答案 0 :(得分:2)
您应该在header-enricher
之后使用message driven channel adapter
:
<int:header-enricher>
<int:header name="originalPayload" expression="payload"/>
</int:header-enricher>
并使用failedMessage
中own error handler
的此标头。