Spring Integration-Files.inboundAdapter,服务器错误打开的文件太多

时间:2018-11-22 05:31:05

标签: spring spring-boot spring-integration spring-integration-dsl

嗨,我是spring集成的新手,并且我有下面的代码流可以读取/扫描目录中的文件,我遇到打开太多文件的服务器错误..我想知道下面的问题是否引起问题? 轮询程序是否每次都打开新文件而不关闭以前的文件?

谢谢您的帮助。

@Bean
public IntegrationFlow jsonFileRefreshFlow(){
return IntegrationFlows.from(Files.inboundAdapter(new File(filePath))
    .autoCreateDirectory(true)
    .patternFilter("*.json")
    .watchEvents(FileReadingMessageSource.WatchEventType.CREATE,
      FileReadingMessageSource.WatchEventType.MODIFY)
      .useWatchService(true)
      .scanEachPoll(true)
      .preventDuplicates(false)
    e -> e.poller(Pollers.fixedDelay(1000, TimeUnit.MILLISECONDS)
    .maxMessagesPerPoll(Integer.MAX_VALUE)))
  .<File, Resource>transform(p -> new FileSystemResource(p))
  .<Resource>handle((p,h) -> {
    try{
      // process payload
    }catch (IOException ioEx){
      log.error("Error refreshing json specs {}", ioEx);
    }finally {
      try {
        p.getInputStream().close();
      } catch (IOException e) {
        log.error("error closing stream");
      }
    }
    return null;
  }).get();

1 个答案:

答案 0 :(得分:1)

框架不会打开文件;大概您的.handle()方法可以;因此它负责关闭它。