根据计时器和直接路线构造骆驼路线

时间:2019-07-04 12:38:04

标签: java apache-camel

我想用骆驼实现一条路线,分别满足两个要求:

  • 使用石英在一天中的特定时间(凌晨3点)开始路由
  • 从其他路线(直接:myOtherRoute)消费

我已经有一条从direct:myOtherRoute消耗的路由,我现在要实现的是增加启动计时器。

from("direct:myOtherRoute")
            .marshal()
            .zipFile()
            .setHeader(Exchange.FILE_NAME, constant(endpointsURLs.get(EXTRACT_ZIP_FILENAME)))
            .log("Generate ZIP")
            .to("file:" + endpointsURLs.get(EXTRACT_ZIP_DIR) + "?doneFileName=" + endpointsURLs.get(EXTRACT_ZIP_TRIGGER));

2 个答案:

答案 0 :(得分:0)

处理此问题的一种肮脏方法是可以在骆驼生成器中运行TimerTask并添加RouteDefinitions或suspantRoute路由。如果您的问题没有解决,请告诉我。

答案 1 :(得分:0)

请看一下:

Apache Camel : Quartz2

package com.test.camel.quartz2;

import org.apache.camel.spring.SpringRouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class QuartzTest extends SpringRouteBuilder {

    @Override
    public void configure() throws Exception {

        from("quartz2://myGroup/myTimerName?cron=0+0+3+?+*+*+*").to("direct:myOtherRoute");

        from("direct:myOtherRoute").log("Running");
    }

}

我添加了可以与spring-boot一起使用的完整测试类。记住要导入Maven依赖项!

奖金:要创建您的cron模式,您可以使用以下网站 cron-expression-generator-quartz 并记得按照骆驼石英2页中的“ +”符号替换空格


注意:如果需要石英1.x兼容性,请改用以下命令:Apache Camel : Quartz