2016-08-12 13 views
0

私は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オプションを試しましたが、このエラーを回避できませんでした。

+0

で試してくださいmapJmsMessage = false –

+0

そのClaus ...ログにこの警告が表示されます "WARN |ボディクラスから使用する特定のJmsMessageタイプを判別できません。ジェネリックJmsMessageを使用しますBody class:org.apache.activemq.command .ActiveMQObjectMessage。POJOを送信する場合は、クラスがjava.io.Serializableを実装する必要があるか、JMSエンドポイントでjmsMessageTypeオプションを設定して特定のタイプを強制することができます。しかし、それはメッセージを移動しました... –

+0

@Claus - 答えとして追加して、私はあなたにフルクレジットを与えます;) –

答えて

1

mapJmsMessage=falseオプションを使用して、JMSからCamel Messageへのマッピングを切り替えることができます。その後、

とは、キューに送信するときに、キャメルはメッセージタイプを推測しようとはしませんが、設定されたオブジェクトを使用するので、jmsMessageType=Objectを設定し、その後、メッセージはそのまま送信されます。

関連する問題