Mule请求者正在使用来自JMS队列的所有消息

时间:2014-09-14 15:31:03

标签: jms mule mule-studio

我正在使用Mule请求者面临一个小问题。 我有以下骡子流程: -

 <!-- This flow sends payload to ActiveMQ -->
 <flow name="SendPayloadToActiveMQ" doc:name="mulerequesterdemoFlow1">
 <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:8088/requester" doc:name="HTTP"/>
 <set-payload value="My Payload" doc:name="Set Payload"/>
 <jms:outbound-endpoint doc:name="JMS" queue="input" connector-ref="Active_MQ"/>
 </flow>

 <!-- This flow consumes 3 payload from ActiveMQ -->
<flow name="CountRequester" doc:name="CountRequester">
 <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP" path="request3messages"/>
 <mulerequester:request-collection config-ref="Mule_Requester" resource="jms://input" doc:name="Mule Requester" count="3"/>
 <logger level="INFO" doc:name="Logger" message="Payload: #[payload]"/>
    </flow>

现在您可以看到第一个流 SendPayloadToActiveMQ 将有效负载发送到JMS队列输入队列,第二个流 CountRequester 将仅消耗来自JMS 输入队列的3条消息..  但现在的问题是,如果输入队列中有6条消息,那么第二条流正在消耗队列中的所有6条消息,并且队列保持空白。 我甚至可以在记录器中看到所有六条消息都被消耗了Payload:org.mule.api.processor.LoggerMessageProcessor: Payload: [My Payload, My Payload, My Payload, My Payload, My Payload, My Payload] 但是我假设在配置时只消耗3条消息  <mulerequester:request-collection config-ref="Mule_Requester" resource="jms://input" doc:name="Mule Requester" count="3"/> 应该只消耗3条消息.... 请帮忙..我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

逻辑中曾经存在一个停止迭代的错误:https://github.com/mulesoft/mule-module-requester/commit/4ad1fd74b2dc76e1231c246623909f5e4fe4f145#diff-2

那么你使用的是什么版本的请求者模块?

编辑:它出现了另一个阻止request-collection兑现请求count的错误:https://github.com/mulesoft/mule-module-requester/issues/9

要解决此问题,您可以:

  • 自己修复bug(更多是while循环上面的变量初始化)并使用你自己的模块快照。
  • 在一个小的Groovy组件中实现相同的逻辑。您只需返回java.util.List个有效负载而不是MuleMessageCollection