使用@InboundChannelAdapter注释防止重复文件轮询

时间:2015-10-14 09:46:40

标签: spring-integration

我在java类中使用y注释来从目录中轮询文件。

我们如何防止重复文件轮询呢?

1 个答案:

答案 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问题...