温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Spring-integration: keep a context for a Message throught a chain
spring spring-integration

其他 - Spring集成:通过一条链保持消息的上下文

发布于 2020-03-27 10:53:12

我使用的弹簧整合,我有信息,通过一个去int:chain与多个元素:int:service-activatorint:transformers,等最后,一个消息被发送到另一个应用程序的REST端点。还有一个errorHandler,可以将任何Exception内容保存在文本文件中。

出于管理目的,我想保留有关链中发生的情况的一些信息(例如:“此数据库调用返回了此结果”,“在此转换过程中已应用了此规则”等)。这将等效于日志文件,但绑定到Message当然已经有一个记录器,但是最后,我需要为此创建一个文件(该文件在调用Rest以后,或者当发生错误时)Message

我想知道是否存在Message可以通过链的任何部分调用的“上下文” ,以及可以在其中存储内容的地方。我没有在官方文档中找到任何东西,但是我不确定要寻找什么。

我一直在考虑将其全部放入消息本身,但是:

  • 这是一个不可变的对象,因此每次我想向其标头(或有效负载)添加内容时都需要重新构建它。
  • 如果出现Exception,我将无法从错误处理程序中检索任何新数据,因为它采用了原始消息。
  • 我不能真正将其添加到有效负载对象中,因为某些本机转换器/服务激活器正在直接使用它(这也意味着重写大量代码...)

我也一直在考虑某个“线程绑定” bean的国王,它可以充当每个Message的上下文,但是我看到了太多的问题。

也许我对这些想法有些误解。无论如何,我只需要一种通过Spring集成链的多个元素来保留数据的方法,并且还能够在错误处理程序中访问它。

查看更多

查看更多

提问者
Asoub
被浏览
124
Gary Russell 2019-07-04 00:08

添加标题,例如 map或列表,并在每个阶段添加到其中。

启用消息历史记录时,框架会执行类似的操作。