我有一个从外部SFTP服务器下载文件的要求.我有服务,有API托管,一旦我们击中API它应该从SFTP服务器下载文件,我使用 Camel 作为集成器从服务器下载文件.现在,当API被称为路由启动和文件从源复制(服务器)到目的地(客户端),但sftp路由没有关闭,它仍然从服务器获取文件,因为文件存在于服务器中。如何解决这个问题,下面是代码片段。
API代码
@GetMapping("myapicall")
public void fetchFileFromSFTPServer() {
logger.info("-------Begin of fetchFileFromSFTPServer-------");
try {
RouteBuilder routeBuilder = sftpRoute.buildRoute();
camelContext.addRoutes(routeBuilder);
} catch (Exception e) {
logger.error("Error while loading Routes------" + e.getMessage());
}
camelContext.setUseMDCLogging(true);
logger.info("-------End of fetchFileFromSFTPServer-------" );
}
路由生成器代码
public RouteBuilder buildRoute() {
RouteBuilder builder = new RouteBuilder() {
@Override
public void configure() throws Exception {
from(
"sftp://server/?username=**&password=**&passiveMode=true&disconnect=true")
.routeId("SFTP_File_Route").setExchangePattern(ExchangePattern.InOnly).
log("connecting to SFTP Server")
.to("file://C:/myLocal").end();
}
};
return builder;
}
1条答案
按热度按时间kmpatx3s1#
请参阅FTP文档。默认情况下,该文件在FTP服务器上保持原样。您需要配置camel-ftp之后应该如何处理该文件,例如
delete=true
或任何移动选项等。