我正在编写 sftp-integration-ftp 入站流代码以从 FTP 服务器读取文件,并希望确保如果我的服务的多个实例和从同一输入位置读取文件,那么只有一个处理来自输入目录的文件以避免重复。
代码:'''@Bean public SftpPersistentAcceptOnceFileListFilter getSftpPersistentAcceptOnceFileListFilter(final ConcurrentMetadataStore concurrentMetadataStore) { return new SftpPersistentAcceptOnceFileListFilter( concurrentMetadataStore,"INT_"); }
@Bean
public ConcurrentMetadataStore getConcurrentMetadataStore() {
return new JdbcMetadataStore(jdbcTemplate);
}
@Bean
@InboundChannelAdapter(value = "sftpISLChannel", poller = @Poller(fixedDelay = "30000", maxMessagesPerPoll = "-1"))
public MessageSource<InputStream> sftpISLMessageSource(final SftpPersistentAcceptOnceFileListFilter sftpPersistentAcceptOnceFileListFilter) {
ChainFileListFilter<ChannelSftp.LsEntry> chainFileListFilter = new ChainFileListFilter<>();
chainFileListFilter.addFilter(getCustomOutboundFilter());
chainFileListFilter.addFilter(sftpPersistentAcceptOnceFileListFilter);
SftpStreamingMessageSource source = new SftpStreamingMessageSource(sftpRemoteFileTemplate, null);
source.setRemoteDirectory(properties.getInputDir());
//source.setFilter(getChainFileListFilter());
source.setFilter(chainFileListFilter);
return source;
}
I'm using oracle DB.
So my questions are
do I need to create the tables myself for JdbcMetadataStore ?
select * from INT_CHANNEL_MESSAGE;
select * from INT_GROUP_TO_MESSAGE;
select * from INT_LOCK;
select * from INT_MESSAGE;
select * from INT_MESSAGE_GROUP;
select * from INT_METADATA_STORE
Above Queries return 0 records