Spring 集成 SFTP 每日提取但立即处理
Spring Integration SFTP fetch daily but process immediately
我想每天过滤和获取文件,然后立即处理所有过滤的文件。
这是我的配置;
@Bean
public SftpInboundFileSynchronizer sftpInboundFileSynchronizer() {
SftpInboundFileSynchronizer fileSynchronizer = new SftpInboundFileSynchronizer(sftpSessionFactory());
fileSynchronizer.setRemoteDirectory(remoteDirectory);
fileSynchronizer.setFilter(new SftpSimplePatternFileListFilter(downloadFilter));
return fileSynchronizer;
}
@Bean
@InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(cron = "0 0 0 * * ?"))
public MessageSource<File> sftpMessageSource() {
SftpInboundFileSynchronizingMessageSource messageSource = new SftpInboundFileSynchronizingMessageSource(sftpInboundFileSynchronizer());
messageSource.setLocalDirectory(new File(localDirectory));
messageSource.setAutoCreateLocalDirectory(true);
return messageSource;
}
这是我的文件处理程序;
@ServiceActivator(inputChannel = "sftpChannel")
public void handle(File file) {
log.info("file received . {}", file.getName());
}
它每天获取文件并等待一天为每个获取的文件调用我的处理程序。
我想立即使用获取的文件。
可能吗 ?
我该怎么做?
在轮询器上增加 maxMessagesPerPoll
- 默认为 1。
或者-1表示无穷大(同时未处理的文件仍然存在)。
我想每天过滤和获取文件,然后立即处理所有过滤的文件。
这是我的配置;
@Bean
public SftpInboundFileSynchronizer sftpInboundFileSynchronizer() {
SftpInboundFileSynchronizer fileSynchronizer = new SftpInboundFileSynchronizer(sftpSessionFactory());
fileSynchronizer.setRemoteDirectory(remoteDirectory);
fileSynchronizer.setFilter(new SftpSimplePatternFileListFilter(downloadFilter));
return fileSynchronizer;
}
@Bean
@InboundChannelAdapter(channel = "sftpChannel", poller = @Poller(cron = "0 0 0 * * ?"))
public MessageSource<File> sftpMessageSource() {
SftpInboundFileSynchronizingMessageSource messageSource = new SftpInboundFileSynchronizingMessageSource(sftpInboundFileSynchronizer());
messageSource.setLocalDirectory(new File(localDirectory));
messageSource.setAutoCreateLocalDirectory(true);
return messageSource;
}
这是我的文件处理程序;
@ServiceActivator(inputChannel = "sftpChannel")
public void handle(File file) {
log.info("file received . {}", file.getName());
}
它每天获取文件并等待一天为每个获取的文件调用我的处理程序。 我想立即使用获取的文件。 可能吗 ? 我该怎么做?
在轮询器上增加 maxMessagesPerPoll
- 默认为 1。
或者-1表示无穷大(同时未处理的文件仍然存在)。