【问题标题】:How to read message form activemq in camel route如何在骆驼路线中读取来自activemq的消息
【发布时间】:2017-06-05 22:10:02
【问题描述】:

我正在尝试使用骆驼路由从队列中读取消息并将其发送到消息侦听器的 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>

消息监听类:

public class ReportIncidentRequestConsumer implements MessageListener {

        Logger _log = Logger.getLogger(ReportIncidentRequestConsumer.class);

        @Override
        public void onMessage(Message arg0) {
            _log.info("================== IM HERE IN REQUEST CONSUMER ===============");
        }

    }

例外: 原因:javax.jms.JMSException:无法从内容构建正文。代理无法使用可序列化的类。原因:java.lang.ClassNotFoundException:禁止类 org.apache.cxf.message.MessageContentsList!不信任此类被序列化为 ObjectMessage 有效负载。

【问题讨论】:

标签: apache-camel jms activemq


【解决方案1】:

使用骆驼时,您不需要 MessageListener 来处理消息。

您可以使用Processor 对消息进行操作。

首先编写一个实现处理器的类...

public class MyProcessor implements Processor {
  public void process(Exchange exchange) throws Exception {
    // do something...
  }
}

然后你可以通过在 Spring 中声明 bean 来轻松地在路由中使用它,比如通过 XML(或者如果那是你的 Registry,则在 JNDI 中注册它)

<bean id="myProcessor" class="com.acme.MyProcessor"/>

然后在 Camel 中你可以做到

from("activemq:myQueue").to("myProcessor");

【讨论】:

    【解决方案2】:

    跳过在骆驼中处理 ActiveMQ 的不同方法,由于“不受信任的包”而引发了您的异常。 ActiveMQ 使用可序列化/反序列化对象的受信任包列表(更多详细信息:http://activemq.apache.org/objectmessage.html)。 为了能够发送/接收您的对象,您需要作为 ActiveMq 客户端告诉您信任他们。以下是一些示例:https://github.com/apache/activemq/blob/master/activemq-camel/src/test/resources/org/apache/activemq/camel/jms-object-message.xml

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 1970-01-01
      • 2016-10-29
      • 2013-08-10
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多