我需要創建一個路由,它會在迭代之間週期性地調用某個進程,延遲時間很短。Apache Camel中的無限循環
當我看文檔循環:
的循環允許用於處理消息的次數,可能在每次迭代的不同方式。主要在測試期間有用。
所以這對我沒有用,因爲我需要做一個無限循環(沒有明確指定CamelLoopSize
)。
我的第二個想法是用怎樣的一個「遞歸」的:
from("direct:updateLoop").routeId("updateLoop")
.process(someProcess)
...
.filter(someFilter) // Can be used to stop the workflow
.delay(18000000) // Wait 5 hours and start again
.to("direct:updateLoop")
這非常適用於幾天後,但大約600次迭代,這將失敗,並StackOverflowException
有沒有更好的辦法在無限循環中運行我的進程?
爲什麼不使用石英或計時器組件? – 2014-10-09 08:33:23
因爲我無法預先確定完成該過程需要多長時間。該過程可能需要幾分鐘或幾天時間才能完成。當我只設置一個定時器時,就有可能同時處理同一個數據集。設置延遲只適合我的使用情況。 – Peter 2014-10-09 08:38:35
投票消費者模式如何? – vikingsteve 2014-10-09 09:10:16