我尝试使用spring boot,集成ftp示例(http://docs.spring.io/spring-integration/reference/html/ftp.html,15.5.1)。我能够从远程目录中读取文件,有些人不会删除带有标志setDeleteRemoteFiles(true)的文件。如果我缺少设置任何标志来删除远程文件,请告诉我。
@Bean
public SessionFactory<FTPFile> ftpSessionFactory() {
DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory();
sf.setHost("localhost");
sf.setPort(21);
sf.setUsername("sudaredd");
sf.setPassword("");
return new CachingSessionFactory<FTPFile>(sf);
}
@Bean
public FtpInboundFileSynchronizer ftpInboundFileSynchronizer() {
FtpInboundFileSynchronizer fileSynchronizer = new FtpInboundFileSynchronizer(ftpSessionFactory());
fileSynchronizer.setDeleteRemoteFiles(true);
fileSynchronizer.setRemoteDirectory("");
fileSynchronizer.setFilter(new FtpSimplePatternFileListFilter("*"));
return fileSynchronizer;
}
@Bean
@InboundChannelAdapter(channel = "ftpChannel", poller = @Poller(fixedDelay = "5000"))
public MessageSource<File> ftpMessageSource() {
FtpInboundFileSynchronizingMessageSource source =
new FtpInboundFileSynchronizingMessageSource(ftpInboundFileSynchronizer());
source.setLocalDirectory(new File("ftp-inbound"));
source.setAutoCreateLocalDirectory(true);
source.setLocalFilter(new AcceptOnceFileListFilter<File>());
return source;
}
答案 0 :(得分:0)
所有配置看起来都不错。
尝试为org.springframework.integration
类别启用@InboundChannelAdapter
以跟踪行为。
OTOH,请确保您的FTP服务器支持删除操作,并且您的用户确实有权执行该操作。
由于taskScheduler
通过AbstractInboundFileSynchronizer.copyFileToLocalDirectory()
执行任务,您可能会错过日志中的错误。
如果您能够调试代码并在HttpContext.Current.Session["RunSession"] = "1";
var userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
_authenticationManager.SignIn(new AuthenticationProperties { IsPersistent = rememberLogin }, userIdentity);
中设置断点以跟随逻辑并确定可能出错的地方,那么也会很棒。