我尝试创建一条路由,该路由可以使用csv文件访问http url并简单地打印其内容。不幸的是,文件正在被连续读取。

  • 是否可以只读取一次然后停止处理?
  • 为什么在此示例中“direct:start”不起作用,我必须使用计时器?

  • 这是我的代码:
    context.addRoutes(new RouteBuilder() {
                public void configure() {
                    from("timer://start?delay=5000")
                            .to("http4://127.0.0.1:18080/data.csv")
                            .unmarshal().csv()
                            .process(new Processor() {
                                @Override
                                public void process(Exchange exchange) throws Exception {
                                    String list = exchange.getIn().getBody(String.class);
                                    log.info(list);
                      //Here I would like to stop the route when file reading is finished
                                }
                            });
            });
    

    谢谢!

    最佳答案

    计时器将每隔5秒持续通话一次。如果您只想一次调用计时器,则可以设置repeatCount=1:http://camel.apache.org/timer

    但是您可能需要考虑只让它运行一次。如果您需要稍后再调用该HTTP URL,该怎么办?

    就像弗兰克(Frank)所说的那样,有一种方法可以将一条路线从一条路线上停下来:http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html

    09-11 02:15
    查看更多