首页 > 解决方案 > 如何在骆驼中为 to() 方法编写计时器

问题描述

在这条路线中,我想在direct:firstdirect:first完成后的每个间隔时间执行直接:第二个端点,这就是为什么我用 timer repeatcount=1 编写 from() 方法的原因,所以任何人都可以帮助我如何解决这个问题

from("timer:repeatcount=1").
.to("direct:first").  
 to("direct:second").
.setBody(simple("Hello from timer at ${header.firedTime}"))
.to("stream:out");

标签: apache-camelspring-camel

解决方案


  1. 使用循环延迟来模拟定时器工作
from("timer:repeatcount=1")
    .to("direct:first")
    .to("direct:second");

from("direct:second")
    .loopDoWhile(true)        // never ending loop, check loop component for more control
        .setBody(simple("Hello from timer at ${header.firedTime}"))
        .to("stream:out")
        .delay(1000)          // delay 1s, check delay component for more control
    .end();                   // end loop
  1. 使用controlBus启动定时器的非活动路由

推荐阅读