Apache camel 如何在驼峰路由中读取消息表单activemq
我试图使用驼峰路由从队列中读取消息并将其发送到消息侦听器的bean,但它以异常结束。我做错什么了吗。 我在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 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");