我在java类中使用y
注释来从目录中轮询文件。
我们如何防止重复文件轮询呢?
答案 0 :(得分:3)
要通过Annotations配置文件轮询过程,您应该执行以下操作:
@Bean
@InboundChannelAdapter(value = "filesChannel", poller = @Poller(fixed-rate = "5000"))
public MessageSource<File> fileReadingMessageSource() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setDirectory(new File(INBOUND_PATH));
source.setAutoCreateDirectory(false);
source.setFilter(new AcceptOnceFileListFilter<>());
return source;
}
使用Spring Integration Java DSL:
可以通过更简单的方式实现同样的目标 @Bean
public IntegrationFlow fileReadingFlow() {
return IntegrationFlows
.from(s -> s.file(tmpDir.getRoot()).patternFilter("*.sitest"),
e -> e.poller(Pollers.fixedDelay(100)))
.transform(Transformers.fileToString())
.aggregate(a -> a.correlationExpression("1")
.releaseStrategy(g -> g.size() == 25))
.channel(MessageChannels.queue("fileReadingResultChannel"))
.get();
}
另一个你的问题也可以通过DSL来解决,但它肯定是单独的SO问题...