骆驼:处理完成后停止计时器路由

Camel: Stop a timer route after the processing is complete

我正在使用 "timer" 组件和 "repeatCount=1" 动态添加路由以添加路由。一旦完成 运行.

我需要停止这条路线
from("timer://" + host + "-Compressor?delay=10000&repeatCount=1")
    .process(.....)
.to("mock:test");

这里,host是动态添加路由时使用的变量。该路线需要停止,以便在需要时再次生成它。我无法做的是如何知道路由是否没有待处理的消息。对于 GenericFileConsumer,有一个方法 "getPendingExchangesSize()"。但是我没有得到这个组件的任何类似信息。

此外,计时器组件仅用于启动路由而不需要任何外部模拟,并且它可以选择 运行 一次。

查看控制总线 eip 模式。您可以路由到端点以停止路由。

您可能希望使用 'async=true' 来执行此操作,因为您会停止当前正在路由的路由,这在同步模式下无法正常工作,因为 Camel 会在停止之前尝试完成路由的飞行消息以优雅的方式