Java 如何使用apache camel从http中仅读取一次csv文件?
我尝试创建一个路由,它可以使用csv文件访问http url并简单地打印它的内容。不幸的是,正在连续读取该文件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")
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文件并停止路由。应该可以重复。