我需要创建一个路由,它会在迭代之间周期性地调用某个进程,延迟时间很短。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