首页 > 解决方案 > 如果前一个路由的执行没有完成就不要启动路由

问题描述

我正在为下面代码中的问题寻找 apache camel 中的解决方案。在完成之前的运行之前,该路线无法重新开始。

@Override
public void configure() throws Exception {
    from("timer://foo?fixedRate=true&period=3s")
            .routeId("teste")
            .log("INIT")
            .delay(5000)
            .log("DELAY-END")
            .end();
}

在此处输入图像描述

标签: javaspringspring-bootapache-camel

解决方案


您可以让Delayer 使用非阻塞异步延迟,这意味着Camel 将使用调度器来调度将来要执行的任务。然后该任务将继续路由。这允许调用者线程不阻塞并能够服务其他消息等。

直接来自文档.asyncDelayed()在之后添加.delay(5000)以启用非阻塞行为。


推荐阅读