Apache Camel: DefaultMessage нельзя привести к JmsMessage - PullRequest
2 голосов
/ 11 октября 2011

Я пытаюсь использовать маршрут Camel для отправки сообщения POST в скрипт PHP, когда новое сообщение JMS поступает в данную очередь. Я получил эту работу, но сейчас в сообщении 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

Я включил зависимость camel-jms в мой файл pom.xml. Я использую Camel 2.4.0 и поместил jar-файл camel-jms в папку 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 голосов
/ 15 октября 2011

В Camel была ошибка по этому поводу. Вы можете исправить это, обновив Camel или использовать более новый AMQ, который имеет более новую версию Camel.

...