2015-08-05 2 views
4

Как я могу получить @InboundChannelAdapter для работы с файлами? что-то вроде этого:Весенняя интеграция Java - как использовать @InboundChannelAdapter для проверки каталога для файлов?

<int-file:inbound-channel-adapter id="executionMessageFileInputChannel" 
             directory="file:${fpml.messages.input}" 
             prevent-duplicates="false" filename-pattern="*.xml"> 
     <int:poller fixed-delay="20000" max-messages-per-poll="1" /> 
</int-file:inbound-channel-adapter> 

но в java?

ответ

5

Что-то вроде этого:

@Bean 
@InboundChannelAdapter(value = "executionMessageFileInputChannel", 
     poller = @Poller(fixedDelay = "20000", maxMessagesPerPoll = "1")) 
public MessageSource<File> fileMessageSource(@Value("${fpml.messages.input}") File directory) { 
    FileReadingMessageSource fileReadingMessageSource = new FileReadingMessageSource(); 
    fileReadingMessageSource.setDirectory(directory); 
    fileReadingMessageSource.setFilter(new SimplePatternFileListFilter("*.xml")); 
    return fileReadingMessageSource; 
} 

С другой внимание со стороны заработной платы, пожалуйста, к проекту Spring Integration Java DSL, с помощью которых оно может выглядеть следующим образом:

@Bean 
    public IntegrationFlow fileReadingFlow(@Value("${fpml.messages.input}") File directory) { 
     return IntegrationFlows 
       .from(s -> s.file(directory).patternFilter("*.xml"), 
         e -> e.poller(Pollers.fixedDelay(20000))) 
     ..................... 
       .get(); 
    } 
+0

Спасибо за ответ, это работает. Кроме того, я обновил вопрос, требуя немного дополнительной информации. Было бы здорово, если бы вы могли посмотреть. Ура! – Ocelot

+1

Пожалуйста, задайте этот вопрос в отдельном потоке SO. Это не относится к текущему. –

+0

Конечно, новая тема здесь: http://stackoverflow.com/questions/31845269/spring-integration-how-to-use-inbound-channel-adapter-to-check-a-directory-for – Ocelot