2014-09-14 8 views
0

я столкнулся небольшая проблема с использованием Мул запрашивающего .. У меня есть следующий Mule поток: -Mule запрашивающая потребляет все сообщения из очереди JMS

<!-- 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 будет потреблять только 3 сообщения от JMS вход очереди .. Но теперь вопрос, если есть 6 сообщений в Ввод очереди, затем второй поток потребляет все 6 сообщений из очереди, а очередь оставлена ​​пустой. Я даже вижу в журнале, что все шесть сообщений потребляются. Полезная нагрузка: 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 сообщения .... Пожалуйста, помогите .. я делаю любую вещь здесь не так?

ответ

0

Там раньше ошибка в логике, чтобы остановить итерации: https://github.com/mulesoft/mule-module-requester/commit/4ad1fd74b2dc76e1231c246623909f5e4fe4f145#diff-2

Так что версия модуля реквестере вы используете?

EDIT: Оказывается, есть еще одна ошибка, которая предотвращает request-collection соблюдать запрашиваемое count: https://github.com/mulesoft/mule-module-requester/issues/9

Ходить вокруг вопроса Вы можете:

  • исправить ошибку самостоятельно (больше переменной инициализация выше цикла while) и использовать собственный снимок модуля.
  • Реализация той же логики в небольшом компоненте Groovy. Вы можете просто вернуть java.util.List полезных данных вместо MuleMessageCollection.
Смежные вопросы