Die große XML-Datei kommt über einen definierten Eingangskanal an, z.B. SFTP-Ordner, Objektspeicher (S3/Blob) mit Event-Trigger oder eine Message-Queue. Der Ingestion-Service nimmt die Datei entgegen, vergibt eine eindeutige Verarbeitungs-ID (Correlation-ID) und legt einen Eintrag in einer Statustabelle an ("empfangen"). Ab hier ist die Datei im System nachverfolgbar.
Besonderheit bei FTP/SFTP als Quelle, wenn Dateien nach der Verarbeitung nicht sofort gelöscht werden: Damit nicht bei jedem Poll erneut alle Dateien heruntergeladen und verarbeitet werden, sollte eine Datei entweder auf dem Server in einen Ordner wie "processed/" verschoben bzw. umbenannt werden (sofern Schreibrechte bestehen), oder – falls die Dateien unverändert liegen bleiben müssen – ein Abgleich der Verzeichnis-Metadaten (Dateiname, Größe, Änderungsdatum) gegen die bestehende Statustabelle erfolgen, bevor eine Datei heruntergeladen wird. Das Verschieben/Umbenennen erfolgt dabei praktischerweise bereits am Ende von Prozess 1, sobald Parsing und Persistierung in die DB erfolgreich abgeschlossen sind – nicht erst nach Verarbeitungslogik und XML-Generierung, da diese als eigene, entkoppelte Prozessketten ohnehin nur noch aus der DB lesen und die Quelldatei ab diesem Zeitpunkt nicht mehr benötigen. Das Verzeichnis-Listing selbst ist günstig, teuer ist nur das erneute Herunterladen und Verarbeiten. Ergänzend hilft ein Wasserzeichen (letztes erfolgreich verarbeitetes Änderungsdatum), um die Vergleichsmenge klein zu halten, ein Claim-Mechanismus bei mehreren parallelen Ingestion-Workern, sowie eine idempotente Persistenz als Rückversicherung gegen versehentliche Doppelverarbeitung.
Ingestion (Eingang)