2016-08-12 84 views
0

我在運行ActiveQM 5.11.1中嵌入了Camel。我有我需要用一個簡單的駱駝航線隊列之間移動一些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的類路徑來解決這個問題...但是,這是不是在我的情況選擇。

相反,我可以告訴駱駝/ AMQ不要試圖反序列化它,只是移動它?我嘗試了jmsMessageType選項,但他們沒有避開這個錯誤...

+0

嘗試使用mapJmsMessage = false –

+0

that Claus ...我在日誌中得到這個警告「WARN |無法確定具體的JmsMessage類型以便在body類中使用,將使用通用的JmsMessage。Body類:org.apache.activemq.command .ActiveMQObjectMessage。如果你想發送一個POJO,那麼你的類可能需要實現java.io.Serializable,或者你可以通過在JMS端點上設置jmsMessageType選項來強制一個特定的類型。「但它確實移動了消息... –

+0

@Claus-補充說,作爲答案,我會給你充分的功勞;) –

回答

1

您可以使用mapJmsMessage=false選項將JMS映射到駱駝消息。

然後設置jmsMessageType=Object,所以當發送到隊列時,Camel不會嘗試猜測消息類型,而是使用配置好的對象,然後按原樣發送消息。