【发布时间】:2020-04-22 21:15:14
【问题描述】:
入站通道适配器是使用轮询器创建的,以轮询根目录及其子目录中存在的文件
e.g.
RootDir
|_abc.txt
|_subdirectory1
|_subdirfile1.doc
问题是入站通道适配器正在读取目录也作为消息
@Bean
@InboundChannelAdapter(autoStartup = "false", value = "incomingchannel", poller = @Poller("custompoller"))
public MessageSource<File> fileReadingMessageSource(DirectoryScanner directoryScanner) {
FileReadingMessageSource sourceReader = new FileReadingMessageSource();
sourceReader.setScanner(directoryScanner);
}
@Bean
public DirectoryScanner directoryScanner() {
DirectoryScanner scanner = new RecursiveDirectoryScanner();
CompositeFileListFilter filter = new CompositeFileListFilter<>(
Arrays.asList(new AcceptOnceFileListFilter<>(), new RegexPatternFileListFilter(regex)));
scanner.setFilter(filter);
return scanner;
}
@Trasnformer(inputChannel="incomingchannel",....
torequest(Mesage<File> message) {
message.getPayload()
}
这里 message.getpayLoad 正在打印 subdirectory1 即目录也被读取为文件消息
我可以在 trasnformer 中明确处理文件是否为目录并忽略,但想知道有什么方法可以在附加到入站通道适配器的递归目录扫描器中过滤它吗?
【问题讨论】:
标签: file directory spring-integration