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

Spring integration 使用@InboundChannelAdapter注释防止重复文件轮询,spring-integration,Spring Integration,我在java类中使用@InboundChannelAdapter注释来轮询目录中的文件 在这种情况下,如何防止重复的文件轮询?要通过注释配置文件轮询过程,您应该执行以下操作: @Bean @InboundChannelAdapter(value = "filesChannel", poller = @Poller(fixed-rate = "5000")) public MessageSource<File> fileReadingMessageSource() { Fil

我在java类中使用
@InboundChannelAdapter
注释来轮询目录中的文件


在这种情况下,如何防止重复的文件轮询?

要通过注释配置文件轮询过程,您应该执行以下操作:

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

另一个问题是,您的问题也可以通过DSL解决,但这肯定是一个单独的SO问题…

您需要显示您的配置,这样我们就有了一些背景。嗨,Gary Russell,这是通过过滤器解决的。我还有一个问题,我们如何使用注释实现文件:出站通道适配器?我的要求是将一个文件从一个位置移动到另一个位置。你应该把这个问题作为一个新问题来问,因为它是不相关的。看见在
@Bean
上使用
@ServiceActivator
,这是一个
文件写入MessageHandler
。顺便说一句,我们将在框架文档中解决这个困惑:
    @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();
    }