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表示无穷大(同时未处理的文件仍然存在)。