2017-03-08 3 views
1

Ich habe eine Spring-Integration-Anwendung, die einige Verarbeitung für eine Datei durchführt, sobald es in einem lokalen Verzeichnis vorhanden ist. Nachdem die Datei verarbeitet wurde, wird sie in ein verarbeite- tes Verzeichnis verschoben.Spring Integration - FileSystemPersistentAcceptOnceFileListFilter Filtern von Dateien mit demselben Namen, aber anderen Timestamp

Einige Zeit später wird eine neue Datei im selben lokalen Verzeichnis mit demselben Dateinamen, aber anderem Inhalt und Zeitstempel angezeigt. Die Anwendung sollte die Datei erneut verarbeiten und dann in ein verarbeiteter Ordner verschieben ... aber es wird nie eine Nachricht generiert. Hier ist die Konfig:

Ich möchte nicht die Anwendung eine Datei mit dem gleichen Namen und der gleichen Zeitstempel bearbeiten. Wie kann ich sicherstellen, dass die Anwendung zwar Dateien mit demselben Namen aber unterschiedlichen Zeitstempeln verarbeitet?

Antwort

2

Verwenden Sie eine ChainFileListFilter anstelle einer CompositeFileListFilter.

Letzteres stellt alle Dateien zu jedem Filter dar. Wenn der LastModifiedFileListFilter eine Datei beim ersten Versuch filtert (und die FileSystemPersistentAcceptOnceFileListFilter es passiert), filtert der zusammengesetzte Filter die Datei; Beim nächsten Versuch wird es erneut gefiltert, auch wenn es den ersten Filter passiert.

Der ChainFileListFilter übergibt eine Datei, die durch LastModifiedFileListFilter gefiltert wird, nicht an den nächsten Filter.

Dies war ein neuer "Fix" (in 4.3.7 JIRA here).

Die aktuelle Version ist 4.3.8.

Verwandte Themen