Timer Camel-当使用计时器组件来共享数据库时,如何使用JavaDSL停止Camel路由?

Timer Camel-当使用计时器组件来共享数据库时,如何使用JavaDSL停止Camel路由?,timer,apache-camel,mybatis,Timer,Apache Camel,Mybatis,当数据库中没有更多数据要池时,我尝试停止骆驼路由,但无法停止 from("timer://pollTheDatabase?delay=50s") .routeId("db-pooling-route") .to("mybatis:queryToSelectData?statementType=SelectOne") .choice() .when().simple("${in.header.CamelMyBatisResult} == ''").stop()

当数据库中没有更多数据要池时,我尝试停止骆驼路由,但无法停止

from("timer://pollTheDatabase?delay=50s")
.routeId("db-pooling-route")
.to("mybatis:queryToSelectData?statementType=SelectOne")
    .choice()
        .when().simple("${in.header.CamelMyBatisResult} == ''").stop()
        .otherwise().to("direct:processing-data")
        .end()
    .end()
.end();
stop()
表示停止路由当前邮件,而不是路由本身。要停止/启动路线等,您可以使用controlbus组件


由于您希望停止路由本身,因此在controlbus端点上设置选项
async=true

我尝试使用controlbus,它成功了

from("timer://pollTheDatabase?delay=50s&synchronous=false")
.routeId("db-pooling-route")
.to("mybatis:queryToSelectData?statementType=SelectOne")
    .choice()
        .when().simple("${in.header.CamelMyBatisResult} == ''")
        .to("controlbus:route?async=true&routeId=db-pooling-route&action=stop")
.end()
.to("direct:processing-data");

我想,考虑到你的路线,你不会知道
stop()
是否有影响。在这两种情况下,当到达您的路线终点时,将不会执行进一步的(路线)逻辑。谢谢您的回复,先生。我试过控制总线组件,然后才开始工作。谢谢您的回复,先生。我尝试使用synchronous=false的控制总线,它成功了。