我正在使用“timer”组件和“repeatCount=1”动态添加路线来添加路线。一旦完成本次运行,我需要停止该路线。
from("timer://" + host + "-Compressor?delay=10000&repeatCount=1")
.process(.....)
.to("mock:test");
这里,host是动态添加路由时使用的变量。需要停止该路线,以便在需要时再次生成它。我无法做的是如何知道路由是否没有待处理的消息。对于 GenericFileConsumer,有一个方法“getPendingExchangesSize()”。但我没有得到该组件的任何类似信息。
此外,计时器组件仅用于启动路线,无需任何外部模拟,并且可以选择仅运行一次。
最佳答案
请参阅 controlbus eip 模式。您可以路由到端点来停止路由。
您可能需要使用“async=true”来执行此操作,因为您会停止当前正在路由的路线,这在同步模式下无法正常工作,因为 Camel 会在优雅地停止之前尝试完成路线的飞行消息方式
关于java - Camel : Stop a timer route after the processing is complete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453347/