Apache Camel:DefaultMessage无法强制转换为JmsMessage

时间:2011-10-11 14:03:44

标签: java jms apache-camel

每当新的JMS消息到达给定队列时,我都在尝试使用Camel路由将POST消息发送到PHP脚本。我已经开始工作了,但是现在POST消息缺少JMS消息体,我在ActiveMQ日志中遇到以下错误:

2011-10-10 17:46:39,961 | ERROR | Caused by: [org.apache.camel.RuntimeCamelException -
java.lang.ClassCastException: org.apache.camel.impl.DefaultMessage cannot be cast to 
org.apache.camel.component.jms.JmsMessage] |
org.apache.camel.component.jms.EndpointMessageListener | 
DefaultMessageListenerContainer-1
org.apache.camel.RuntimeCamelException: java.lang.ClassCastException:
org.apache.camel.impl.DefaultMessage cannot be cast to
org.apache.camel.component.jms.JmsMessage

我在我的pom.xml文件中包含了camel-jms依赖项。我正在使用Camel 2.4.0,并将camel-jms jar文件放在我的lib文件夹中,用于ActiveMQ。

这就是我的路线目前的样子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<route autoStartup="true" inheritErrorHandler="true" id="route2" xmlns:ns2="http://camel.apache.org/schema/web" xmlns="http://camel.apache.org/schema/spring">
    <from uri="activemq:topic:topic_name"/>
    <setBody inheritErrorHandler="true" id="setBody2">
        <simple>name=${body}</simple>
    </setBody>
    <setHeader headerName="Content-Type" inheritErrorHandler="true" id="setHeader3">
        <constant>application/x-www-form-urlencoded;</constant>
    </setHeader>
    <setHeader headerName="CamelHttpMethod" inheritErrorHandler="true" id="setHeader4">
        <constant>POST</constant>
    </setHeader>
    <to uri="http://path/to/process.php" inheritErrorHandler="true" id="to2"/>
</route>

我在路线配置中遗漏了什么?或者ActiveMQ服务器本身有问题吗?

1 个答案:

答案 0 :(得分:0)

Camel有一个关于此问题的错误。您可以通过升级Camel或使用具有更新Camel版本的较新AMQ来解决此问题。