2015-11-05 19 views
0

我試圖推遲一條消息排隊幾秒鐘。 但是,當我使用駱駝延遲選項時,它不會在隊列中延遲,而是立即消耗,並延遲路徑路徑。 我們如何才能延遲消息,讓他們在隊列中等待幾秒?如何在偵聽器使用camel接收它之前將隊列中的JMS消息延遲?

我的春天與駱駝配置看起來像下面。

<bean id="jms" class="org.apache.camel.component.jms.JmsComponent"> 
    <property name="connectionFactory" ref="jmsConnectionFactory" /> 
</bean> 

<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring"> 

    <route id="routeOne" delayer="10000">    
     <from uri="jms://queueone?concurrentConsumers=1"/>   
     <log message="routeOne incoming message ${body}"/>    
     <delay><constant>30000</constant></delay>      
     <process ref="loggerProcessor"/>       
    </route> 

</camelContext> 

<bean id="loggerProcessor" name="loggerProcessor" class="emh.LoggerProcessor"/> 
+0

某些JMS實現支持延遲消息傳遞。你在使用哪一個? – Nicholas

回答

0

駱駝已經內置了調節器拍打支持,有一個節流部件。請參考:http://camel.apache.org/throttler.html

只需在路由中添加以下內容並延遲消息。

<throttle timePeriodMillis="30000"> 
+0

油門正在從隊列中提取消息並將其保留在路由交換中並等待延遲。如果我們在延遲之前關閉應用程序,那麼我們將丟失該消息 – Gnana

相關問題