2015-08-05 2 views
4

Comment puis-je obtenir @InboundChannelAdapter pour travailler avec des fichiers? quelque chose comme ceci:Intégration de printemps Java - comment utiliser @InboundChannelAdapter pour vérifier un répertoire pour les fichiers?

<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> 

mais en java?

Répondre

5

Quelque chose comme ceci:

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

De l'autre attention de rémunération côté, s'il vous plaît, au projet Spring Integration Java DSL, en utilisant que le même peut ressembler à:

@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

Merci pour la réponse, cela fonctionne. En outre, j'ai mis à jour la question demandant un peu plus d'informations, ce serait génial si vous pouviez jeter un oeil. À votre santé! – Ocelot

+1

Veuillez poser cette question dans le thread SO séparé. Cela ne concerne pas l'actuel. –

+0

Bien sûr, nouveau fil ici: http://stackoverflow.com/questions/31845269/spring-integration-how-to-use-inbound-channel-adapter-to-check-a-directory-for – Ocelot