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