当前位置: 首页 > 知识库问答 >
问题:

Spring Integration.消息驱动信道适配器.变压器错误处理,原始消息

祖翰音
2023-03-14

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

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

谢谢你的帮助。

共有1个答案

鲁炳
2023-03-14

您应该在消息驱动通道适配器之后使用header-enricher:

<int:header-enricher>
   <int:header name="originalPayload" expression="payload"/>
</int:header-enricher>

并在自己的错误处理程序中使用FailedMessage中的此标头。

 类似资料:
  • 我正在试验Spring Webflux和Spring集成,以从JMS队列创建反应流(Flux)。 我试图从JMS队列(使用Spring集成的IBM MQ)创建一个反应流(Spring Webflux),以便客户端异步获取JMS消息。我相信我已经把一切都正确地连接起来了,因为这些信息正被被动的听众所消耗。然而,我的反应流量流无法显示这些消息。任何帮助都将不胜感激。 这是我用来使我的JMS侦听器响应的

  • 我正试图让地图在我的Json适配器中工作。但不知何故,我总是收到错误信息: JAVAlang.NullPointerException:尝试调用虚拟方法“void”。所容纳之物上下文空对象引用上的startActivity(android.content.Intent) 这是我的第二个Android项目,我找不到我的错误。我希望你们中的一些人能帮助我。

  • 通常,我希望将消息发送到另一个路由来处理它,但我不希望为后续步骤修改该消息。做这件事最好的方法是什么? 我发现的另一个选择是使用异步sedaendpoint,它将原始消息返回给生产者并处理副本,但这会引入异步行为,而异步行为可能并不总是可取的。 看来一定有更好的办法?

  • 我是这个Spring集成和JMS的新手,我开始使用它。在这里,我想通过activemq创建普通的jms消息,并通过spring inbound适配器(消息驱动)接收它。 以下是我的spring配置文件 这是我的测试课。 } 但问题是我不能保证交货。有些时候程序不能接收消息,有些时候它成功了,但有一些警告,如 无法刷新目标“queue://MSG_QUEUE”的JMS连接,将在5000毫秒后重试,原

  • 我使用的是< code>SpringXD,我的配置如下: Spring集成kafka 2.1.0.释放 kafka客户端0.10.0.1 Kafka0.10.x.x Spring-xd-1.3.1.释放 我的 xml 文件中有以下配置: 这是我用来启动/停止频道的Java类: 然后我创建了一个基本流来检查我发送到主题的一些消息是否通过 我检查了创建的文件,它包含我发送到 Kafka 主题的所有消息