Eine Operation ist idempotent, wenn sie zweimal ausgeführt die Welt so hinterlässt, wie sie nach einmaliger Ausführung war. Eine Datei zu löschen ist idempotent. Eine Nachricht zu senden nicht, und in dieser Unwucht wohnen die meisten Fehler mit doppelten Nachrichten.
Wo sie wirklich gebraucht wird
- In Webhook-Handlern, weil die Zustellung mindestens einmal erfolgt und eine Wiederholung normal ist.
- In allem, was Sie nach einer Zeitüberschreitung wiederholen, denn eine Zeitüberschreitung sagt nicht, ob der Schreibvorgang angekommen ist.
- In allem, was eine Warteschlange erneut zustellen kann, also in jeder Warteschlange.
Wie man sie billig bekommt
Führen Sie eine Tabelle der IDs, auf die Sie schon reagiert haben, und schreiben Sie mit einer Eindeutigkeitsbedingung hinein, bevor Sie die Arbeit tun. Scheitert der Eintrag, hat das schon jemand erledigt. Das ist die ganze Technik; sie braucht keine Bibliothek und sie übersteht den Neustart mittendrin, den eine Variante im Arbeitsspeicher nicht übersteht.
Schreiben Sie vorher, nicht nachher. Nachher zu schreiben lässt ein Fenster zwischen der Tat und dem Vermerk darüber, und ein Absturz in diesem Fenster ist genau der Fall, den die Tabelle abdecken sollte.
Was als ID taugt
Wie auch immer der Absender das Ereignis nennt, falls er es benennt. Falls nicht, bauen Sie einen Schlüssel aus den Feldern, die das Ereignis zu diesem Ereignis machen — Konto, Unterhaltung und Nachricht etwa — und bilden einen Hash. Ein Schlüssel aus einem Zeitstempel ist kein Schlüssel: die Wiederholung hat einen anderen.
Idempotenz ist keine Entdopplung in der Oberfläche. Wenn ein Duplikat auf einem Bildschirm ankommt, haben Sie die zweite Nachricht längst gesendet. Die Prüfung gehört ganz an den Anfang des Handlers, bevor irgendetwas hinausgeht.
Häufige Fragen
Machen KI-Agenten Dubletten wahrscheinlicher?
Sie können. Ein KI-Agent, den man zweimal fragt, sendet vielleicht zweimal, und einer, der nach einer Zeitüberschreitung wiederholt, weiß vielleicht nicht, dass der erste Versuch geklappt hat. Geben Sie ihm in seinen Anweisungen eine Regel — das Gespräch nachlesen, bevor er erneut sendet — und lassen Sie das Senden weiter von einer Person freigeben.
Ist die Schaltfläche „In Google Ads anwenden“ in einem Projektraum idempotent?
Ein Vorschlag in einem Raum wird einmal ausgeführt. Wer ein zweites Mal „In Google Ads anwenden“ drückt, ändert nichts.