automaton angepasst, sodass er erfolgreich hochgeladene Dateien vom SFTP löscht

This commit is contained in:
2026-04-30 16:12:46 +02:00
parent b17ce20ee0
commit 30170d85ac
4 changed files with 26 additions and 8 deletions

View File

@@ -14,4 +14,6 @@
# Docker push image to OCI # Docker push image to OCI
- run . - cd docker
- open .env and increase version number in "IMAGE_TAG=..."-variable
- run ./build.sh

View File

@@ -131,11 +131,11 @@ public class FileProcessingPipeline {
Log.info("Starte OCI-Upload"); Log.info("Starte OCI-Upload");
ociUploadService.uploadFiles(context); ociUploadService.uploadFiles(context);
// --- SFTP Rename → .processed --- // --- SFTP Delete ---
// Erst nach erfolgreichem Datei-Upload — Marker kommt danach, // Erst nach erfolgreichem Datei-Upload — Marker kommt danach,
// damit Marker-Präsenz in OCI ↔ ZIP bereits .processed auf SFTP. // damit Marker-Präsenz in OCI ↔ ZIP bereits vom SFTP gelöscht ist.
MDC.put("step", "sftp-rename"); MDC.put("step", "sftp-delete");
sftpService.renameFile(zipFilename, zipFilename + ".processed"); sftpService.deleteFile(zipFilename);
// --- OCI Marker --- // --- OCI Marker ---
// Signalisiert der DB-Verarbeitung, dass der Batch vollständig hochgeladen ist. // Signalisiert der DB-Verarbeitung, dass der Batch vollständig hochgeladen ist.

View File

@@ -112,10 +112,10 @@ public class SftpService {
/** /**
* Benennt eine Datei auf dem Remote-SFTP-Server um. * Benennt eine Datei auf dem Remote-SFTP-Server um.
* Wird nach Erfolg ({@code .processed}) oder Fehler ({@code .error}) aufgerufen. * Wird nach Fehler ({@code .error}) aufgerufen.
* *
* @param filename aktueller Dateiname, z.B. {@code export_2026-04-08.zip} * @param filename aktueller Dateiname, z.B. {@code export_2026-04-08.zip}
* @param newFilename neuer Dateiname, z.B. {@code export_2026-04-08.zip.processed} * @param newFilename neuer Dateiname, z.B. {@code export_2026-04-08.zip.error}
* @throws SftpException bei Verbindungs- oder Umbenennfehler * @throws SftpException bei Verbindungs- oder Umbenennfehler
*/ */
public void renameFile(String filename, String newFilename) throws SftpException { public void renameFile(String filename, String newFilename) throws SftpException {
@@ -129,4 +129,20 @@ public class SftpService {
}); });
Log.infof("SFTP Rename erfolgreich: '%s'", newFilename); Log.infof("SFTP Rename erfolgreich: '%s'", newFilename);
} }
/**
* Löscht eine Datei auf dem Remote-SFTP-Server.
* Wird nach erfolgreichem Verarbeiten aufgerufen.
*
* @param filename Dateiname, z.B. {@code export_2026-04-08.zip}
* @throws SftpException bei Verbindungs- oder Löschfehler
*/
public void deleteFile(String filename) throws SftpException {
Log.infof("SFTP Delete: '%s'", filename);
withSftp(sftp -> {
sftp.rm(config.remotePath() + "/" + filename);
return null;
});
Log.infof("SFTP Delete erfolgreich: '%s'", filename);
}
} }

View File

@@ -12,7 +12,7 @@ galabau.sftp.password=${GALABAU_SFTP_PASSWORD:}
# Fingerprint auf host: ssh-keyscan <host> | ssh-keygen -lf - # Fingerprint auf host: ssh-keyscan <host> | ssh-keygen -lf -
galabau.sftp.host-key-fingerprint=${GALABAU_SFTP_HOST_KEY_FINGERPRINT:SHA256:xyz} galabau.sftp.host-key-fingerprint=${GALABAU_SFTP_HOST_KEY_FINGERPRINT:SHA256:xyz}
# Verzeichnis auf dem SFTP-Server, in dem der Lieferant ZIP-Dateien ablegt # Verzeichnis auf dem SFTP-Server, in dem der Lieferant ZIP-Dateien ablegt
galabau.sftp.remote-path=${GALABAU_SFTP_REMOTE_PATH:/bundesagenturfuerarbeit/austausch/test/galaeingang} galabau.sftp.remote-path=${GALABAU_SFTP_REMOTE_PATH:/bundesagenturfuerarbeit/austausch/dev/galaeingang}
# Temporäres lokales Verzeichnis für Download + Entpacken — wird nach jeder ZIP bereinigt # Temporäres lokales Verzeichnis für Download + Entpacken — wird nach jeder ZIP bereinigt
galabau.sftp.local-work-dir=/tmp/sftp-work galabau.sftp.local-work-dir=/tmp/sftp-work
# galabau.sftp.private-key-path=/etc/secrets/sftp-key # galabau.sftp.private-key-path=/etc/secrets/sftp-key