我正在使用Wire-Tap来处理日志记录,我不允许使用logging-channel-adapter(因此log4j)。
我需要向有效负载添加其他信息,这些信息将被发送到具有处理日志的接口的网关。
有没有办法在流程中间没有指定标题扩充器?
澄清代码:
Wire-Tap部分
<int:channel id="IN_messageRouterFactory">
<int:interceptors>
<int:wire-tap channel="IN_log_gateway" />
</int:interceptors>
</int:channel>
日志网关:
<int:gateway service-interface="foo.bar.loginterface">
<int:method name="log" request-channel="IN_log_gateway" />
</int:gateway>
日志记录服务:
<int:chain input-channel="IN_log_gateway">
<!-- transformations here... -->
<int:service-activator ref="fileLoggerService"/>
</int:chain>
我想添加一些信息,以便我可以记录特定的托管有效负载信息
答案 0 :(得分:0)
从很高的角度来看,你所要求的并不清楚。但无论如何,任何POJO服务都可以接受Message<?>
作为参数。因此,您可以使用任何信息(payload
和headers
)来执行任何逻辑。
从这里我看不出有<gateway>
的理由,因为WireTap是单向组件,因此您的自定义logger
不应返回任何结果。
<强>更新强>
感谢您的解释。
看起来最好通过一些消息丰富(就像你说header-enricher
)那样做,因为你真的有一个message scope
逻辑。
当然,您可以使用wire-tap
克服此问题,但您必须拥有aggregator
到correlate
和group
请求及其回复。再说一遍:如果没有header-enricher
,你就无法实现这一目标。
顺便说一句,你甚至可以在标题中存储请求消息,并在你的上一个<service-activator>
中使用它来获得正确的业务逻辑。