データをマーシャリングおよびアンマーシャリングするように Camel を構成する方法について、誰かがもう少し説明してくれることを願っています。受信者リストを決定するために Bean を呼び出すルートがあります。これは、メッセージの内容 (protobuf) に基づいています。
ルート構成は次のようになります:-
<route id="Splitter">
<from uri="activemq:notification.splitter" />
<unmarshal ref="notificationProto" />
<recipientList>
<method bean="NotificationSplitter" method="splitNotification" />
</recipientList>
</route>
Bean は正常に動作しますが、ダウンストリーム ルートは次のように不平を言います:-
org.apache.camel.RuntimeCamelException: java.lang.RuntimeException: Unable to find proto buffer class
ダウンストリーム ルートには、上記のルートとまったく同じ protobuf dataFormat 構成があります。ダウンストリーム キューに直接ルーティングする (つまり、Bean をバイパスし、"to" キューをハードコードする) 場合、つまりアンマーシャリングの手順もスキップできるため、問題なく動作します。
Camel がメッセージを宛先キューに入れる前に、データを再マーシャリングする必要があると思いますが、XML 内でこれを構成する方法がわかりません。単純に追加してみました...
<marshal ref="notificationProto" />
... recipientListが決定された後、それは行われません(それまでにCamelがメッセージをすでにディスパッチしているためだと思います)。
別の方法として、Bean 内からアンマーシャリングを行うこともできます。これは、交換上のデータがおそらく変更されないままになるためです。これを行う方法がよくわかりません。それはうまくいくでしょうか?
ヒントをありがとう。
J.