2016-08-12 85 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不会尝试猜测消息类型,而是使用配置好的对象,然后按原样发送消息。