2017-11-16 1 views
1

Also lese ich gerade Dateien mit einem Datei-Inbound-Adapter (nio locker) und logge sie einfach ein.So verschieben Sie gesperrte Dateien mit einem Datei-Ausgangs-Adapter

Ich habe versucht, einen Dateiausgangsadapter am Ende des Flusses anzuhängen, um die Dateien an einen neuen Speicherort zu verschieben (/ done), aber jedes Mal, wenn ich einen Fehler erhalte, weil die Datei gesperrt ist.

Wenn ich die nio-locker-Flag entfernen, ist alles in Ordnung. Problem hier ist, dass ich möchte, dass mehrere JVM an diesen Dateien arbeiten, und es besteht das Risiko, dass eine Datei von zwei JVMs aufgenommen wird.

Danke, Cristi

Antwort

0

Try NioFileLocker wie eine Bohne zu entlarven und seinen Namen in dem anstelle der internen <nio-locker><locker ref=""> verwenden.

Wenn Sie bereit sind, die Datei zu verschieben, rufen Sie NioFileLocker Bean und seine unlock(File).

Lassen Sie uns wissen, wie es funktioniert und ich denke, wir können die NioFileLocker Bean-Registrierung basierend auf dem Namen der <int-file:inbound-channel-adapter> überarbeiten.

+0

Hallo. Ich habe darüber auch nachgedacht, aber ich wollte mehrere JVM (Prozesse), die dasselbe Verzeichnis scannen. Angesichts dessen wird es eine sehr kleine Chance geben, dass eine andere JVM die Datei aufnimmt, die gerade entsperrt wurde, um verschoben zu werden. Ich weiß nicht, ob es dafür eine funktionierende Lösung gibt. Für den Moment habe ich den NioLocker entfernt und ich habe nur eine JVM, die einen bestimmten Ordner scannt. – Cristi

+0

Wie wäre es dann https://stackoverflow.com/questions/35093757/move-a-file-without-releasing-lock? –

+0

Hey. Entschuldigung wegen der späten Antwort. Ich habe das auch versucht, die Kopie funktioniert ohne irgendein Problem, aber das Hauptproblem (Datei kann nicht aus dem Eingabeordner gelöscht werden) bleibt noch. Was wir getan haben, ist, eine Entscheidung zu treffen und zuzustimmen, dass nur eine JVM einen bestimmten Ordner gleichzeitig scannt (um eine Sperrung zu vermeiden). – Cristi

Verwandte Themen