Camelでjmsを使用するJavaのアプリケーションはほぼ準備ができています。交換/メッセージに追加情報を追加する必要があるというポップアップが表示されます。これらの追加情報は、実際には新しい Java オブジェクトであるとしましょう。新しいオブジェクトを Exchange に追加する最良の方法は何ですか?
次のようなメッセージを処理する多くの Camel プロセッサがあります。
public class MyProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
String s = exchange.getIn().getBody(String.class);
s = magicalTransform(s);
exchange.getIn().setBody(s, String.class);
//Now I have to add object of some Info.cass:
Info info = new Info( new Date() );
//Can I add it like this? :
exchange.getIn().setBody(info, Info.class);
}
}
問題は、Message に多くのオブジェクトを追加できると、情報が見つからないことです。Message メソッド: setBody(Object body, Class type) はそれが可能であることを示唆していますが、body クラスが 1 つしかないことを示唆するメソッド: getBody() もあります。
この方法でできない場合、最善の方法は何ですか? 変換して情報を含む文字列を 1 つのクラスにラップし、その新しいクラスをメッセージに入れることもできますが、すべてのプロセッサで文字列を取得する方法が変わります。それは避けたい。