2013-08-22 108 views
2

如何在Mule 3.3.1中創建延遲的JMS消息處理器?我的目標是在特定時間間隔內處理來自隊列的消息......一些每分鐘處理消息都會醒來的偵聽器。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:交易,請你確認一下嗎? – Jeet

回答

0

您是否嘗試過使用Quartz? 此配置啓動您的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>