Java 如何使用apache camel从http中仅读取一次csv文件?

Java 如何使用apache camel从http中仅读取一次csv文件?,java,csv,apache-camel,Java,Csv,Apache Camel,我尝试创建一个路由,它可以使用csv文件访问http url并简单地打印它的内容。不幸的是,正在连续读取该文件 是否可以只读取一次,然后停止处理 为什么“direct:start”在本例中不起作用,而我必须使用计时器 这是我的密码: context.addRoutes(new RouteBuilder() { public void configure() { from("timer://start?delay=5000")

我尝试创建一个路由,它可以使用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 url,该怎么办


    正如Frank评论的那样,有一种方法可以从一条路线停止一条路线:

    你看过官方文件了吗?是的,@Peters\uz,这是在路由中添加异常处理的问题。1.如果http调用因连接问题而失败怎么办?2.或者是否存在连接异常?此外,您可能希望每天至少执行一次此路由?你可以做很多事情,这取决于你想要实现什么用例。实际上,每当http请求到达我的第二条路由时,我都想启动这个路由,它使用jetty在另一个端口上侦听。当有http请求时,我想启动主路由,处理csv文件并停止路由。应该可以重复。