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