Archiv für den Monat: August 2022

Event-basierte Systeme: Probleme beim Behandeln von doppelten Nachrichten

Bei meinem aktuellen Kunden existieren verschiedene Mikroservices, die in der Regel asynchron über Nachrichten miteinander kommunizieren. Die Services senden dabei Nachrichten über fachliche Ereignisse (wie bspw. „Rechnung gebucht“ oder „Wareneingang gebucht“) ohne dass sie wissen, für welche anderen Microservices diese relevant sind. Letztere können sich dann auf diese Ereignisse registrieren und diese behandeln, bspw. um nach einem Wareneingang den Bestand für einen Artikel zu erhöhen. Hier fängt das Problem schon an, denn man kann nicht davon ausgehen, dass eine Nachricht nur genau einmal zugestellt wird. Die Nachrichten bei meinem Kunden werden mindestens einmal zugestellt. Damit bspw. eine Nachricht über einen Wareneingang, die mehrmals verarbeitet wird, den Bestand trotzdem nur einmal erhöht., müssen diese dedupliziert werden. Unsere Idee war, diese Deduplizierung über fachliche Attribute, die wir in der Nachricht sowieso mitsenden, durchzuführen. Das klang und funktionierte lange gut, aber im Folgenden soll es darum gehen, warum dieses am Ende zu Problemen führen kann.

Weiterlesen