Technische Entscheidungen · Senior · Frage 4 von 14
Nach dem Speichern einer Bestellung muss der Dienst ein Event an einen Broker veröffentlichen. Events dürfen nicht verloren gehen, und der Broker kann an keiner Datenbanktransaktion teilnehmen. Was tust du?
- 1Erst committen, dann im Handler mit Wiederholungen veröffentlichen
- 2Erst veröffentlichen, dann committen, sobald der Broker bestätigt
- 3Eine transaktionale Outbox, veröffentlicht von einem Relay
Antwort zeigen
Richtige Antwort: Eine transaktionale Outbox, veröffentlicht von einem Relay
Erklärung
Das Event in derselben Transaktion wie die Bestellung zu schreiben heißt, beide existieren oder keines, und ein Relay stellt es später zu. Nach dem Commit zu veröffentlichen passt zu Events, deren Verlust verkraftbar ist, aber ein Absturz zwischen den Schritten verliert das Event. Erst zu veröffentlichen passt zu nichts, was konsistent bleiben muss, denn ein gescheiterter Commit lässt Verbraucher auf eine Bestellung reagieren, die es nicht gibt.