2017-09-20 3 views
0

J'ai ce code dans lequel je veux incorporer un SftpPersistentAcceptOnceFileListFilter et je ne sais pas comment. Le filtre doit être avant de récupérer les fichiers localement.SFTP Persistent Accepter Seulement Une fois le filtre sur la passerelle sftp

@InboundChannelAdapter(value = "sftpMgetInputChannel", 
    poller = @Poller(fixedDelay = "5000")) 
public String filesForMGET(){ 
    return "'/tmp/input/remoteDirectory/*'"; 
} 

@Bean 
public IntegrationFlow sftpMGetFlow() { 
    return IntegrationFlows.from("sftpMgetInputChannel") 
      .handleWithAdapter(h -> h.sftpGateway(this.sftpSessionFactory, 
      Command.MGET, "payload") 
      .options(Option.RECURSIVE) 
      .regexFileNameFilter("((\\d{8})|*\\.txt)") 
      .localDirectoryExpression("'sftp-inbound/'" + "#remoteDirectory")) 
      .handler(messageHandler()) 
      .get(); 
} 

@Bean 
public MessageChannel sftpMgetInboundChannel(){ 
    return new DirectChannel(); 
} 

@Bean 
public MessageHandler messageHandler(){ 
return new MessageHandler() { ... } 
} 

Répondre

1

Utiliser un CompositeFileListFilter ou ChainFileListFilter avec un filtre SftpRegexPatternFileListFilter et le SftpPersistentAcceptOnceFileListFilter.

Construire le filtre et utiliser .filter(compositeFilter()).

+0

Le préfixe ctor arg dans le filtre est simplement de permettre l'utilisation de la même mémoire dans plusieurs filtres, pour l'isolation. –