在 Camel w/o 反序列化中的 ActiveMQ 队列之间移动消息
move messages between ActiveMQ queues in Camel w/o deserializing
我是 运行 Camel 嵌入在 ActiveQM 5.11.1 中。我有一些 Java 序列化消息,我需要使用简单的 Camel 路由在队列之间移动...
<route>
<from uri="activemq:A"/>
<to uri="activemq:B"/>
</route>
不出所料,我收到此错误...
WARN | Execution of JMS message listener failed. Caused by:
[org.apache.camel.RuntimeCamelException - Failed to extract body due
to: javax.jms.JMSException: Failed to build body from content.
Serializable class not available to broker. Reason:
java.lang.ClassNotFoundException: com.test.MyMessage. Message:
ActiveMQObjectMessage
我知道这是因为 Camel/AMQ 不知道 MyMessage
并且我可以将它添加到 AMQ 的类路径中以解决这个问题......但在我的情况下这不是一个选项.
相反,我可以告诉 Camel/AMQ 不要尝试反序列化它而只是移动它吗?我尝试了 jmsMessageType
选项,但他们没有解决这个错误...
您可以使用 mapJmsMessage=false
选项关闭从 JMS 到 Camel 消息的映射。
然后设置jmsMessageType=Object
,这样在发送到队列时,Camel 将不会尝试猜测消息类型,而是使用配置的对象,然后按原样发送消息。
我是 运行 Camel 嵌入在 ActiveQM 5.11.1 中。我有一些 Java 序列化消息,我需要使用简单的 Camel 路由在队列之间移动...
<route>
<from uri="activemq:A"/>
<to uri="activemq:B"/>
</route>
不出所料,我收到此错误...
WARN | Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - Failed to extract body due to: javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: com.test.MyMessage. Message: ActiveMQObjectMessage
我知道这是因为 Camel/AMQ 不知道 MyMessage
并且我可以将它添加到 AMQ 的类路径中以解决这个问题......但在我的情况下这不是一个选项.
相反,我可以告诉 Camel/AMQ 不要尝试反序列化它而只是移动它吗?我尝试了 jmsMessageType
选项,但他们没有解决这个错误...
您可以使用 mapJmsMessage=false
选项关闭从 JMS 到 Camel 消息的映射。
然后设置jmsMessageType=Object
,这样在发送到队列时,Camel 将不会尝试猜测消息类型,而是使用配置的对象,然后按原样发送消息。