私はラクダで要求/返信jmsコンシューマを取得しようとしています。 受信メッセージが受信されましたが、ラクダも応答を送信してもメッセージはマーシャリングされません。私はActiveMQのからとするすべてのメッセージをマーシャリングするインターセプタを使用していますCamel intercept/marshal jms reply
は
OsdrDataFormat osdrDataFormat = new OsdrDataFormat();
interceptFrom("activemq:*").unmarshal(osdrDataFormat);
interceptSendToEndpoint("activemq:*").marshal(osdrDataFormat);
エンドポイント(メッセージをマーシャリングするとき、私はのJMSTypeを埋めることができますので、私はJacksonDataFormatを拡張します。)
通常の片道交換、これは(例えば)作業
from("activemq:queue:test").bean(TestComponent.class, "test");
from("direct:test-input").to("activemq:queue:test");
しかし、私はこのルート
を使用するときにされますfrom("activemq:queue:test").bean(TestComponent.class, "test");
メッセージをJMSReplyToメッセージとともにテストキューに送信します(activemq管理ページを使用)。私はラクダが応答メッセージを送信したが、jsonにマーシャリングされていないことがわかります。
marshalを手動で追加することはできますが、私は抽象的なRouteBuilderを作成し、デフォルトで各ルートにインターセプタを追加できるので、インターセプタを使用することをお勧めします。
from("activemq:queue:test").bean(TestComponent.class, "test").marshal(osdrDataFormat);
これを解決する方法は誰にも分かりますか?あるいは、activemqからのすべてのメッセージがマーシャリングされていることを確認する良い方法でしょうか?
このスレッドも見つかりました:Apache Camel inOut routes, out exchange marshaling/unmarshaling with jaxb しかし、ここでの答えはマニュアルのマーシャリングを使用することです。
(非常に)遅れて返信して申し訳ありませんが、私はマニュアルのマーシャルとアンマーシャルを使用して終了するのが最良の解決策でした、私たちは非マーシャルの前に何か他のことをしたいユースケースを発見しました。 –