我有一个作为独立 Java 应用程序运行的简单文件传输应用程序。它从 SFTP 端点获取文件并将它们移动到另一个端点。
文件在传输后会从 SFTP 端点中删除。当没有更多文件时,最好让程序结束。但是,我无法找到可以启动 Camel 并使其有条件地结束的解决方案(例如,当 SFTP 端点中没有更多文件时)。我目前的解决方法是启动 Camel,然后让主线程休眠很长时间。然后用户必须手动终止应用程序(通过 CTRL+C 或其他方式)。
有没有更好的方法让应用程序自动终止?
以下是我当前的代码:
在 CamelContext(Spring App 上下文)中:
<route>
<from uri="sftp:(url)" />
<process ref="(processor)" />
<to uri="(endpoint)" />
</route>
main() 方法:
public static void main(String[] args)
{
ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml");
CamelContext camelContext = appContext.getBean(CamelContext.class);
try
{
camelContext.start();
Thread.sleep(1000000000); // Runs the program for a long time -- is there a better way?
}
catch (Exception e)
{
e.printStackTrace();
}
UploadContentLogger.info("Exiting");
}