我正在测试两个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队列,并且回复确实返回到代理,但初始请求者不会使用它。
如何让它发挥作用?