我正在运行嵌入在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
选项,但他们没有解决这个错误...
答案 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不会尝试猜测消息类型,而是按配置使用对象,然后按原样发送消息。