gpt4 book ai didi

java - 如何正确记录 Camel 中的消息/路由(流)?

转载 作者:行者123 更新时间:2023-12-01 19:01:32 25 4
gpt4 key购买 nike

我正在使用 Apache Camel 将一些 SOAP 消息从 A 路由到 B。

我想为某些特定路由添加日志记录,但问题是消息正文是一个流。

我的解决方案是将该流转换为字符串,然后将其发送到端点 B。

这似乎工作正常,但我不确定这个方法有多干净?

这就是我现在的路线:

<route>
<from uri="cxf:bean:ServiceA?dataFormat=MESSAGE" />
<convertBodyTo type="java.lang.String"/>
<to uri="log:my.company?level=WARN"/>
<to ref="ServiceB" />
</route>

问题是我是否应该使用wireTap和流缓存来复制流,将其转换为字符串,记录它并将其他未触及的流发送到ServiceB。我找不到正确的方法。这是我的尝试:

<route streamCache="true">
<from uri="cxf:bean:ServiceA?dataFormat=MESSAGE" />
<wireTap uri="log:my.company?level=WARN" /> <!-- how to convert this stream to a string? -->
<to ref="ServiceB" />
</route>

所以,你说什么? WireTap 还是上述解决方案?

最佳答案

您只需在日志端点上启用 showStreams=true 选项即可。然后它也会记录流;在此之前你不需要转换 body 。不过,您仍然需要启用流缓存,以确保稍后当您继续处理消息时可以重新读取流。

请参阅日志组件文档中的选项: http://camel.apache.org/log

关于java - 如何正确记录 Camel 中的消息/路由(流)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com