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>
それで、あなたは何と言いますか?盗聴または上記の解決策?