我正在使用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或上述解决方案?
答案 0 :(得分:4)
您只需在日志端点上启用showStreams = true选项即可。然后它也会记录流;并且你不需要在此之前转换身体。您仍然需要启用流缓存,以确保在以后继续处理邮件时可以重新读取流。
从其文档中查看日志组件的选项:http://camel.apache.org/log