回复队列不会使用回复

时间:2013-01-25 15:06:42

标签: java jms apache-camel fuseesb jbossfuse

我正在将具有InOut模式的消息发送到JMS队列,并将replyTo设置为预定义的队列。 有时候一切都运行良好,有时候我们不会从该队列中读取回复,并且会因TimedOutException而失败。 有时我可以在回复队列上看到2个或更多的消费者(使用AMQ Web控制台),但是我不会消耗它。

当我在回复队列中看到一个消费者时(使用AMQ Web控制台),一切正常 当我在回复队列中看到许多消费者时(使用AMQ Web控制台),camel不会从该队列中读取回复并且因TimedOutException而失败。

环境:保险丝ESB

Java代码

from("activemq:spirit.adapter.producer.shippingorder.commands") 
.id("router-Shipping-Order-Commands") 
.log(LoggingLevel.INFO, "Transport1", "router-Shipping-Order-Commands request: ${body}")
.to("activemq:transport.consumer.shippingorder.commands?replyTo=tra‌nsport.prod‌ucer.shippingorder.event&replyToType=Exclusive&requestTimeout=120000")‌​
.log(Logg‌​ingLevel.INFO, "Transport1", "router response: ${body}"); 

activemq配置

<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://10.10.40.94:61616"/>
 </bean>

 <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
    init-method="start" destroy-method="stop">
    <property name="maxConnections" value="1" />
    <property name="connectionFactory" ref="jmsConnectionFactory" />
 </bean>


 <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
    <property name="connectionFactory" ref="pooledConnectionFactory" />
 </bean>

  <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="configuration" ref="jmsConfig" />
  </bean>

此配置是在camel-context.xml文件中编写的,在同一文件中还有另一个用于其他路由的activemq配置

你能告诉我吗?

2 个答案:

答案 0 :(得分:0)

您可以发布您正在使用的activemq配置吗?例如,确保在池上配置init和destroy方法,以便正确启动|停止,如下所示:http://camel.apache.org/activemq

答案 1 :(得分:0)

大家好 问题是由于Camel-jms 2.9.x中的一些错误引起的,这些错误在Fuse ESB 7.0.1中发布并在Fuse ESB 7.1.0中解决