2017-05-31 105 views
0

是否可以使用骆驼路由发送活动mq中的wsdl请求正文。如果是,我可以在下面实现的是我的示例代码,其中im试图发送队列中的wsdl请求正文,但没有发生。如何使用骆驼路由在activemq中发送wsdl请求正文

<route id="report"> 
      <from id="_from2" uri="direct:reportIncident"/> 
      <to id="_to3" uri="activemq:queue:in.incident.report"/> 
      <process id="_process1" ref="reportIncidentProcessor"/> 
      <to id="_to1" uri="log:output"/> 
     </route> 

我有例外下面我fuse.log文件

org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 20000 millis due reply message with correlationID: Camel-ID-NISB-TEC-C3880-54427-1496206891706-5-5 not received on destination: temp-queue://ID:NISB-TEC-C3880-54424-1496206882676-7:1:1. Exchange[ID-TEC-1496206891706-5-4] 
    at org.apache.camel.component.jms.reply.ReplyManagerSupport.processReply(ReplyManagerSupport.java:153)[246:org.apache.camel.camel-jms:2.17.0.redhat-630077] 
    at org.apache.camel.component.jms.reply.TemporaryQueueReplyHandler.onTimeout(TemporaryQueueReplyHandler.java:62)[246:org.apache.camel.camel-jms:2.17.0.redhat-630077] 
+0

该消息发送给AMQ,但在另一端没有人使用它并发送回复机智欣20秒。如果你不想或者不需要通信是请求 - 回复,那么你需要相应地设置交换模式或者[配置终端](http://camel.apache.org/jms.html)来达到这个效果。 – Ralf

回答

1

Web服务调用默认情况下INOUT,当你发送给它的ActiveMQ传达了相同的风格,因此期望回复你不会得到的消息,因此你会看到这个异常。

所以,如果你想发送INONLY(发射后不管)消息ActiveMQ的,那么你需要指定

<to id="_to3" uri="activemq:queue:in.incident.report"/> 

应该

<to id="_to3" pattern="InOnly" uri="activemq:queue:in.incident.report"/> 

多见于: - http://camel.apache.org/event-message.html - http://camel.apache.org/request-reply.html

+0

非常感谢@Claus的工作。但是我可以在骆驼路由中获得wsdl请求主体/参数的哪些人将它们发送到队列中。获取此异常导致:javax.jms.JMSException:无法从内容构建主体。不可用于经纪商的可序列化类。原因:java.lang.ClassNotFoundException:禁止的类org.apache.cxf.message.MessageContentsList!这个类不被信任被序列化为ObjectMessage有效载荷。请查看http://activemq.apache.org/objectmessage.html以获取有关如何配置可信类的更多信息。 –

+0

您需要将消息转换为可以通过JMS发送的类型,例如String或byte []发送 - 请参阅'convertBodyTo' –