2016-12-28 2 views
0

Ich versuche mit Spring Boot, Integration ftp Beispiel (http://docs.spring.io/spring-integration/reference/html/ftp.html, 15.5.1). Ich bin in der Lage, Dateien aus dem Remote-Verzeichnis zu lesen, einige, wie es nicht die Dateien mit dem Flag setDeleteRemoteFiles (true) zu löschen. Bitte lassen Sie mich wissen, wenn ich vermisse, um Flags zu setzen, um entfernte Dateien zu entfernen.FtpInboundFileSynchronizer.setDeleteRemoteFiles (true) nicht entfernte Dateien nach der Übertragung zu löschen

@Bean 
public SessionFactory<FTPFile> ftpSessionFactory() { 
    DefaultFtpSessionFactory sf = new DefaultFtpSessionFactory(); 
    sf.setHost("localhost"); 
    sf.setPort(21); 
    sf.setUsername("sudaredd"); 
    sf.setPassword(""); 
    return new CachingSessionFactory<FTPFile>(sf); 
} 

@Bean 
    public FtpInboundFileSynchronizer ftpInboundFileSynchronizer() { 
     FtpInboundFileSynchronizer fileSynchronizer = new FtpInboundFileSynchronizer(ftpSessionFactory()); 
     fileSynchronizer.setDeleteRemoteFiles(true); 
     fileSynchronizer.setRemoteDirectory(""); 
     fileSynchronizer.setFilter(new FtpSimplePatternFileListFilter("*")); 
     return fileSynchronizer; 
    } 
    @Bean 
    @InboundChannelAdapter(channel = "ftpChannel", poller = @Poller(fixedDelay = "5000")) 
    public MessageSource<File> ftpMessageSource() { 
     FtpInboundFileSynchronizingMessageSource source = 
       new FtpInboundFileSynchronizingMessageSource(ftpInboundFileSynchronizer()); 
     source.setLocalDirectory(new File("ftp-inbound")); 
     source.setAutoCreateLocalDirectory(true); 
     source.setLocalFilter(new AcceptOnceFileListFilter<File>()); 
     return source; 
    } 

Antwort

0

Die ganze Konfiguration sieht gut aus.

Versuchen Sie, DEBUG für die Kategorie org.springframework.integration einzuschalten, um das Verhalten zu verfolgen.

OTOH, bitte, stellen Sie sicher, dass Ihre FTP-Server-Unterstützung löschen Operation und Ihr Benutzer hat wirklich eine Berechtigung, diesen Vorgang auszuführen.

Da @InboundChannelAdapter seine Aufgabe über taskScheduler ausführt, können Sie einfach einen Fehler in den Protokollen vermissen.

Wäre auch toll, wenn Sie in der Lage sind, den Code zu debuggen und Bruchpunkt in der AbstractInboundFileSynchronizer.copyFileToLocalDirectory() zu platzieren, um mit der Logik zu folgen und festzustellen, was falsch sein kann.

+0

Wenn wir den gleichen Dateinamen in local vs. remote haben, wird die Datei aus dem lokalen Verzeichnis abgerufen und an service activator übergeben. Wenn ich Dateien aus meinem lokalen Verzeichnis lösche, kopiert es auf lokale Dateien und entfernt entfernte Dateien. –

+0

Ok! Also, was ist die Frage? Dies ist das erwartete Verhalten. Wenn Sie die Remote-Datei auf irgendeine Weise entfernen möchten, sollten Sie "RemoteFileTemplate" direkt nach dem Service verwenden. –

Verwandte Themen