gpt4 book ai didi

ftp - Apache Camel FTP - 上下文启动和停止之间的最佳实践是什么

转载 作者:行者123 更新时间:2023-12-04 14:00:33 26 4
gpt4 key购买 nike

我写了一些代码从 FTP 站点下载文件,如下所示:

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from( uri ).to( localBox );
}
});
context.start();
// a tedious sleepy thread !?
// TODO: work around for a better solution
Thread.sleep(20000);
context.stop();

我正在寻找一个更好的解决方案而不是 Thread.sleep 方法。是否也可以获得完成传输还剩多少时间?

谢谢

最佳答案

主要答案

下面的语法将在不使用 Thread.sleep 的情况下为您提供所需的内容:

context.getShutdownStrategy().setTimeout(20000);

其他建议

这个页面有几个other examples of ways to shutdown camel .但是,如果您使用这些方法,很可能您没有按预期使用 camel。正如@Petter 所说,Camel 通常用在连续运行的服务器上。

在这里,当我们想以“一次性”方式运行路由时,我们通常只使用Producer,如下所示:

@Required
protected ProducerTemplate producer;

public Object getObjectFromRoute(String routeId, Object payloadBody) {
return producer.requestBody(routeId, payloadBody);
}

您可以使用类似的技术向负责使用 DSL 关闭事物的路由发送消息,例如 shutdownRouteshutdownRunningTask 或某种 processor 优雅地退出应用程序。

一旦你有了这样的路由,你就可以向你的应用程序发送适当的消息来调用这个路由并干净地退出(或者,使用 Camel 的 Main 类的实例并启用 当您向正在运行的应用程序发送 Ctrl+C 时,挂断支持 会为您处理此问题。

关于ftp - Apache Camel FTP - 上下文启动和停止之间的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com