【问题标题】:Replies are not consumed from reply queue回复不会从回复队列中消耗
【发布时间】:2013-01-09 13:53:23
【问题描述】:

我正在将带有 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 个或更多消费者??是否有其他应用程序在使用您的消息?你的骆驼包是否不止一次开始?否则,请发布一些代码等以获得更好的答案。
  • 不,同一个应用,没有其他应用在消费消息,骆驼包启动了一次,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.producer.shippingorder.event&replyToType=Exclusive&requestTimeout=120000")‌​.log(LoggingLevel.INFO, "Transport1", "router response: ${body} ");
  • 将代码放入问题中并使其可读。然后其他人更容易阅读,因此也可以提供帮助。

标签: java jms apache-camel fuseesb jbossfuse


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    大家好-
    该问题是由 Fuse ESB 7.0.1 中提供并在 Fuse ESB 7.1.0 中解决的 camel-jms 2.9.x 中的一些错误引起的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2012-03-19
      相关资源
      最近更新 更多