2015-08-06 1 views
2

Есть ли способ интеграции с весной (либо с использованием int-file: входящий-канал-адаптер или любые другие средства), чтобы просто проверить каталог для файла (желательно совпадение с шаблоном) без опроса, а если файл существует, извлеките его и обработайте далее, и если это не так, просто закройте (я могу использовать маршрутизаторы для условных переадресаций). То, что я пытаюсь достичь, - это управлять потоком на основе простой одноразовой проверки файла вместо опроса каталога как файл-наблюдатель. ИЛИ мне нужно сделать это на Java, используя активатор службы?Весенняя интеграция - как проверить каталог файлов, без опроса?

EDIT:

Это то, что я получил до сих пор:

@Bean 
    public FileReadingMessageSource fileSource(); 
    CompositeFileListFilter f=new CompositeFileListFilter(); 
    f.addFilter(new SimplePatternFileListFilter("*.zip")); 
    FileReadingMessageSource fsource = new FileReadingMessageSource(); 
    fsource.setDirectory(inputDir); 
    fsource.setFilter(f); 
    return fsource; 
} 

@Bean 
    public IntegrationFlow loadInput(){ 
     return IntegrationFlows 
       .from(fileSource()) 
//    .from(Files.inboundAdapter(inputDir) 
//        .patternFilter("*.zip"), 
//      e -> e.poller(Pollers 
//        .fixedDelay(20000) 
//        .maxMessagesPerPoll(1))) 
       .handle("inputLoaderService", "extractZip") 
       .handle("inputLoaderService", "readInputFile") 
       .enrichHeaders(s -> s.header("Content-Type", "application/json")) 
       .channel("requestChannel") 
       .get(); 
    } 

Не могли бы вы, пожалуйста, руководство меня, как я могу получить это правильно подключен? Та!

ответ

1

Вы можете подключить фасоль FileReadingMessageSource и вызвать ее метод . Когда файлов нет, он вернет значение null.

+0

Это просто опрос источника как обычно. Вам нужно вызвать источник из вашего собственного кода. –