Mule 请求者正在使用 JMS 队列中的所有消息
Posted
技术标签:
【中文标题】Mule 请求者正在使用 JMS 队列中的所有消息【英文标题】:Mule requester is consuming all the messages from JMS queue 【发布时间】:2014-11-08 04:54:19 【问题描述】:我在使用 Mule 请求程序时遇到了一个小问题。 我有以下 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 队列 input 队列,第二个流 CountRequester 将只消费来自 JMS input 队列的 3 条消息..
但现在的问题是,如果 input 队列中有 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】:停止迭代的逻辑曾经有一个错误:https://github.com/mulesoft/mule-module-requester/commit/4ad1fd74b2dc76e1231c246623909f5e4fe4f145#diff-2
那么你使用的是什么版本的请求者模块?
编辑:似乎还有另一个错误阻止request-collection
兑现请求的count
:https://github.com/mulesoft/mule-module-requester/issues/9
要解决此问题,您可以:
自己修复错误(更多的是 while 循环上方的变量初始化)并使用您自己的模块快照。 在一个小的 Groovy 组件中实现相同的逻辑。您可以简单地返回有效载荷的java.util.List
,而不是MuleMessageCollection
。
【讨论】:
以上是关于Mule 请求者正在使用 JMS 队列中的所有消息的主要内容,如果未能解决你的问题,请参考以下文章