Apache camel 如何在驼峰路由中读取消息表单activemq

Apache camel 如何在驼峰路由中读取消息表单activemq,apache-camel,jms,activemq,Apache Camel,Jms,Activemq,我试图使用驼峰路由从队列中读取消息并将其发送到消息侦听器的bean,但它以异常结束。我做错什么了吗。 我在activemq中序列化了对象 <bean class="com.herman.cxf.incident.ReportIncidentRequestConsumer" id="requestConsumer" /> <camelContext id="camelContext-32616f27-d786-4ed8-9f75-2d20

我试图使用驼峰路由从队列中读取消息并将其发送到消息侦听器的bean,但它以异常结束。我做错什么了吗。 我在activemq中序列化了对象

 <bean class="com.herman.cxf.incident.ReportIncidentRequestConsumer"
            id="requestConsumer" />
        <camelContext id="camelContext-32616f27-d786-4ed8-9f75-2d208cd14b40"
            trace="false" xmlns="http://camel.apache.org/schema/blueprint">
            <route id="report_amq">
                <from uri="activemq:queue:INCIDENT_REQUEST" />
                <to uri="bean:requestConsumer" />
            </route>
        </camelContext>
例外:
原因:javax.jms.JMSException:无法从内容生成正文。可序列化类对代理不可用。原因:java.lang.ClassNotFoundException:禁止类org.apache.cxf.message.MessageContentsList!不信任将此类序列化为ObjectMessage负载。

使用camel时,不需要MessageListener来处理消息

您可以使用来对消息执行某些操作

首先编写一个类来实现这样的处理器

public class MyProcessor implements Processor {
  public void process(Exchange exchange) throws Exception {
    // do something...
  }
}
然后,您可以通过在Spring中声明bean(比如通过XML)轻松地在路由中使用它(或者在JNDI中注册它,如果这是您的注册表)


跳过在camel中处理ActiveMQ的不同方法,由于“不受信任的包”,引发了您的异常。ActiveMQ使用可序列化/反序列化对象的受信任包列表(更多详细信息:)。
为了能够发送/接收您需要的对象,作为ActiveMq客户机,告诉他们您信任他们。以下是一些示例:

请参阅消息传递/JMS示例:并阅读/研究JMS消息传递/Camel等等。错误在于通过JMS使用Java对象,这是一个糟糕的设计。我一定会调查这个。。。
public class MyProcessor implements Processor {
  public void process(Exchange exchange) throws Exception {
    // do something...
  }
}
<bean id="myProcessor" class="com.acme.MyProcessor"/>
from("activemq:myQueue").to("myProcessor");