Saya ingin memfilter dan mengambil file setiap hari dan kemudian memproses semua file yang difilter dengan segera.

Ini konfigurasi saya;

 @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;
}

Dan ini file handler saya;

@ServiceActivator(inputChannel = "sftpChannel")
public void handle(File file) {
    log.info("file received . {}", file.getName());
}

Itu mengambil file setiap hari dan menunggu satu hari untuk memanggil pawang saya untuk setiap file yang diambil itu. Saya ingin segera menggunakan file yang diambil itu. apa itu mungkin ? Bagaimana saya bisa melakukannya?

1
Sam 23 Mei 2020, 18:04

1 menjawab

Jawaban Terbaik

Tingkatkan maxMessagesPerPoll pada poller - defaultnya adalah 1.

Atau -1 berarti tak terhingga (sementara file yang belum diproses masih ada).

1
Gary Russell 23 Mei 2020, 18:29