Appearance
Eingang und Übernahme
Ziel des Schritts
Neue Belege schnell starten, Doppelverarbeitung verhindern und Fehlerfälle kontrolliert nachziehen.
Eingangskanal und Ablage
Der Ablauf startet mit eingehenden Rechnungs-E-Mails. Die Nachricht und ihre Anhänge werden tenantbezogen in S3 abgelegt und im Eingangspfad mail/pending/ für die Verarbeitung bereitgestellt.
Damit ist der Beleg für das Polling sichtbar und kann in den technischen Ablauf übernommen werden.
Polling und Priorisierung
pending: neue, noch nicht verarbeitete Belege im Eingang (mail/pending/); wird engmaschig verarbeitet (ca. alle 15 Sekunden), damit frische Eingänge schnell starten.processing: Belege sind bereits von einem Worker geclaimt und in Bearbeitung; dieser Zustand wird nicht direkt gepollt, sondern über den Stale-Check überwacht.retry: Belege mit technischem Fehler in einem vorherigen Versuch; wird in größerem Abstand verarbeitet (ca. alle 60 Sekunden), um Störfälle kontrolliert nachzuziehen.retry-lock: temporär blockierte Retry-Fälle mit Sperrmarker; hat ein eigenes Intervall (ca. alle 5 Minuten), um blockierte Fälle später erneut aufzunehmen.dead-letter: permanenter Fehlerzustand nach ausgeschöpften Wiederholungen; diese Fälle werden vonmail-gozur Benachrichtigung des Nutzers verarbeitet.rejected-final: Endzustand nach erfolgter Benachrichtigung in Outlook.
Damit werden Lastspitzen abgefangen, ohne dass retry den Frischlauf blockiert.
Sichere Übernahme pro Beleg
Vor der Verarbeitung wird pro Beleg ein exklusiver Claim auf holderId gesetzt. Nur bei erfolgreichem Claim geht der Beleg nach processing.
Fehlerpfad während der Übernahme
Schlägt die Verarbeitung fehl, wird ein Retry-Counter geführt:
- bis einschließlich 5 Versuche: Rückführung in
Retry, - ab Versuch 6: Übergang nach
DeadLetter(mit Fehlerhinweis fürmail-go).
So bleiben temporäre Störungen im Lauf, ohne Endlosschleifen.
Stale-Check für hängende Verarbeitungen
Ein zyklischer Stale-Check prüft processing-Fälle über LastModified in S3.
Wenn ein Beleg im Status processing länger als 15 Minuten keine Aktualisierung in S3 hat, wird er als hängend gewertet. Der Stale-Check verschiebt ihn dann automatisch nach retry, damit ein neuer Verarbeitungsversuch starten kann.