在Camel中的ActiveMQ队列之间移动消息没有反序列化

时间:2016-08-12 19:12:58

标签: apache-camel activemq

我正在运行嵌入在ActiveQM 5.11.1中的Camel。我有一些Java序列化消息,我需要在队列之间移动一个简单的Camel路由...

    <route>
        <from uri="activemq:A"/>
        <to uri="activemq:B"/>
    </route>     

如预期的那样,我收到了这个错误...

  

警告|执行JMS消息侦听器失败。引起:   [org.apache.camel.RuntimeCamelException - 无法提取正文   to:javax.jms.JMSException:无法从内容构建正文。   可序列化的类不可用于代理。原因:   java.lang.ClassNotFoundException:com.test.MyMessage。信息:   ActiveMQObjectMessage

我知道这是因为Camel / AMQ不了解MyMessage我可以将它添加到AMQ的类路径中来解决这个问题......但这不是一个问题。我的选择。

相反,我可以告诉Camel / AMQ不要尝试反序列化并移动它吗?我尝试了jmsMessageType选项,但他们没有解决这个错误...

1 个答案:

答案 0 :(得分:1)

您可以使用from apscheduler.schedulers.background import BackgroundScheduler sched = BackgroundScheduler() def disable_interval(): sched.remove_job('INTERVAL_JOB') def enable_interval(): sched.add_job(run_function, 'interval', minutes=46, id='INTERVAL_JOB') if __name__ == '__main__': sched.start() sched.add_job(enable_interval, 'cron', minute='0' hour='6') sched.add_job(disable_interval, 'cron', minute='40' hour='23') 选项将映射从JMS转换为Camel消息。

然后设置mapJmsMessage=false所以当发送到队列时,Camel不会尝试猜测消息类型,而是按配置使用对象,然后按原样发送消息。