私はCamelをActiveQM 5.11.1に組み込んでいます。私は、単純なキャメルルートとキュー間で移動する必要があるいくつかのJavaシリアル化されたメッセージを持っている...CamelのActiveMQキュー間でメッセージをデシリアライズなしで移動する
<route>
<from uri="activemq:A"/>
<to uri="activemq:B"/>
</route>
予想通り、私はこのエラーを取得...
はWARN | JMSメッセージリスナーの実行に失敗しました。原因: [org.apache.camel.RuntimeCamelException - ボディの抽出に失敗しました :javax.jms.JMSException:コンテンツから本文を構築できませんでした。 ブローカではシリアル化可能なクラスを使用できません。理由: java.lang.ClassNotFoundException:com.test.MyMessage。メッセージ: ActiveMQObjectMessage
私はキャメル/ AMQ約MyMessage
を知らないと、私はこれを回避するためにAMQのクラスパスに追加することができます...しかし、それは私の場合はオプションではありませんので、これは知っています。
代わりに、Camel/AMQにデシリアライズしないように伝えるだけでいいですか? jmsMessageType
オプションを試しましたが、このエラーを回避できませんでした。
で試してくださいmapJmsMessage = false –
そのClaus ...ログにこの警告が表示されます "WARN |ボディクラスから使用する特定のJmsMessageタイプを判別できません。ジェネリックJmsMessageを使用しますBody class:org.apache.activemq.command .ActiveMQObjectMessage。POJOを送信する場合は、クラスがjava.io.Serializableを実装する必要があるか、JMSエンドポイントでjmsMessageTypeオプションを設定して特定のタイプを強制することができます。しかし、それはメッセージを移動しました... –
@Claus - 答えとして追加して、私はあなたにフルクレジットを与えます;) –