2013-08-22 5 views
2

Как создать обработчик сообщений JMS с задержкой в ​​Mule 3.3.1? Моя цель - обрабатывать сообщения из очереди в определенном интервале ... некоторый слушатель, который каждую минуту просыпается для обработки сообщений.Mule: Обработка сообщений через интервалы. Обработка отложенных сообщений

У меня есть следующая конфигурация, но задержка не соблюдается. Когда сообщение откатывается назад, оно немедленно выбирается для обработки.

<spring:bean id="MQConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
     <spring:property name="transportType" value="1"/> 
     <spring:property name="hostName" value="myHost"/> 
     <spring:property name="port" value="1414"/> 
     <spring:property name="queueManager" value="myQmgr"/> 
    </spring:bean> 

<jms:connector name="queueConnector" connectionFactory-ref="MQConnectionFactory" 
      specification="1.1" username="xxx" password="yyy" 
      disableTemporaryReplyToDestinations="true" 
      numberOfConcurrentTransactedReceivers="3" maxRedelivery="5"> 
      <service-overrides transactedMessageReceiver="com.mulesoft.mule.transport.jms.TransactedPollingJmsMessageReceiver"/> 
</jms:connector> 

<jms:endpoint name="someQueue" queue="osmQueue" connector-ref="queueConnector"> 
    <jms:transaction action="ALWAYS_BEGIN"/>   
    <property key="pollingFrequency" value="60000"/> 
</jms:endpoint> 

Я много искал, но не смог определить правильное решение. Если есть лучший вариант, я открыт. Цените любую помощь. 2 дня и ответа нет? Я неправильно сформулировал этот вопрос?

+0

Вы можете поделиться своей конфигурацией MQConnectionFactory? Также я вижу, что вы настраиваете transactedMessageReceiver, хотя транзакция не используется, поэтому, вероятно, она не будет использоваться в любом случае – genjosanzo

+0

@genjosanzo. Обновлено MQConnectionFactory. Благодарю. Вы упоминаете, что «транзакция не используется» .... но я использую jms: transaction, не могли бы вы подтвердить? – Jeet

ответ

0

Вы пробовали использовать кварц? Эта конфигурация запускает вашу JMS-связь каждую минуту

<flow name="ftpFlow2" doc:name="ftpFlow2"> 
     <quartz:inbound-endpoint jobName="job1" repeatInterval="60000" responseTimeout="10000"  doc:name="Quartz"> 
     <quartz:endpoint-polling-job> 
      <quartz:job-endpoint ref="someQueue"/> 
     </quartz:endpoint-polling-job> 
    </quartz:inbound-endpoint> 
    </flow>