java Spring集成:只从FTP服务器下载新的或更新的文件?
我正在使用Spring Integration编写FTP客户端,以便从远程FTP服务器获取文件。该服务必须下载大文件,因此多次下载同一文件不是最佳选择
以下是我的配置:
@Bean
open fun ftpSessionFactory() = DefaultFtpSessionFactory().apply {
setHost(env.getProperty(FTP_HOST))
setPort(env.getProperty(FTP_PORT)!!.toInt())
setUsername(env.getProperty(FTP_USER))
setPassword(env.getProperty(FTP_PASSWORD))
}
@Bean
open fun ftpInboundFileSynchronizer() = FtpInboundFileSynchronizer(
ftpSessionFactory()).apply {
setDeleteRemoteFiles(false)
setRemoteDirectory(env.getProperty(FTP_REMOTE_DIRECTORY))
setFilter(FtpSimplePatternFileListFilter(env.getProperty(FTP_FILTER)))
}
@Bean
@InboundChannelAdapter(channel = "ftpChannel")
open fun ftpMessageSource() = FtpInboundFileSynchronizingMessageSource(
ftpInboundFileSynchronizer()).apply {
setLocalDirectory(File(env.getProperty(FTP_LOCAL_DIRECTORY)))
setAutoCreateLocalDirectory(true)
setLocalFilter(AcceptOnceFileListFilter<File>())
maxFetchSize = 1
}
@Bean(name = [(PollerMetadata.DEFAULT_POLLER)])
open fun defaultPoller() = PollerMetadata().apply {
maxMessagesPerPoll = 1
}
我正在下载所有与FTP_过滤器匹配的文件,还是刚刚更改
# 1 楼答案
除了
FtpSimplePatternFileListFilter
之外,还需要对远程部分使用AcceptOnceFileListFilter
:https://docs.spring.io/spring-integration/docs/5.0.3.RELEASE/reference/html/ftp.html#ftp-inbound: