tempm队列未在activemq代理上创建

时间:2013-11-20 23:27:02

标签: rest jms activemq apache-servicemix

我正在测试两个servicemix服务器和一个activemq代理的配置。 我的场景是一个servicemix充当传入请求中介/路由器并接收REST调用。然后,这些REST调用将通过JMS路由到驻留在另一个servicemix应用程序上的服务。

服务器A上的蓝图配置

<jaxrs:server id="myRestService" address="/webservice">
        <jaxrs:serviceBeans>
            <ref component-id="myRestSvc"/>
        </jaxrs:serviceBeans>
    </jaxrs:server>

    <bean id="myRestSvc" class="com.mycompany.jaxrs.MyRequestServiceJaxrs" />

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="cxfrs://bean:myRestService" />
            <to uri="jms://queue:myserviceq" />
        </route>
    </camelContext>

我可以发布到服务器A上的REST处理程序。消息接收并转换为JMS,并在服务器B上的代理上排队。服务器C上的使用者成功获取并处理该消息。但是,回复总是失败:

Caused by: javax.jms.InvalidDestinationException: Cannot publish to a deleted Destination: temp-queue://ID:mac-mwendling-49896-1384912338253-84:7:1

服务器A最终会因此消息而超时:

org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 20000 millis due reply message with correlationID: Camel-ID-mac-mwendling-49895-1384912333899-22-7 not received.

似乎永远不会在Broker上创建临时队列。

我正在使用Servicemix 4.5.2和ActiveMq 5.8.0,我目前正在测试在同一台机器上运行的所有三台服务器。

此外,我尝试使用Shared replyTo队列,并且回复确实返回到代理,但初始请求者不会使用它。

如何让它发挥作用?

0 个答案:

没有答案