Gå til indholdet

Transaktionel inbox

En transaktionel inbox bruger varige meddelelsesregistreringer til at beskytte lokal behandling mod dobbelte leveringer.

Også kendt somTransactional inbox
Snitflader & integration

En transaktionel inbox bruger varige meddelelsesregistreringer til at beskytte lokal behandling mod dobbelte leveringer. I den variant, der beskrives her, gemmes registreringen af en behandlet meddelelse og dens forretningsmæssige dataændring i samme databasetransaktion.

En fiktiv tjeneste med forbrugernavnet report-worker modtager meddelelsen E-42. Den registrerer kombinationen af forbruger og meddelelses-ID i sin inbox og øger en rapporttæller fra 6 til 7. Begge ændringer committes samlet. En unikhedsbegrænsning i databasen for denne kombination beskytter også ved samtidige instanser. At kontrollere først og skrive bagefter er ikke tilstrækkeligt i sig selv.

Tidspunktet for nedbruddet betyder noget

Fejler transaktionen før commit, bliver hverken inboxregistreringen eller tællerændringen gemt varigt. Lykkes commit, men den efterfølgende kvittering til brokeren går tabt, kan E-42 komme igen. Den eksisterende registrering forhindrer så en yderligere stigning til 8. Kvitteringen til brokeren er ikke selv en del af denne lokale databasetransaktion.

Idempotens beskriver den sikre virkning af gentagelse; en inbox er et muligt implementeringsmønster. En outbox gemmer derimod udgående meddelelser sammen med den lokale ændring. Inboxen alene garanterer ikke, at et eksternt HTTP-kald udføres eller en e-mail sendes præcis én gang. Opbevaringen af meddelelses-ID’er skal passe til det mulige tidsrum for genlevering og replay; registreringer, der fjernes for tidligt, beskytter ikke længere mod senere dubletter.

Kilder

Artikler om emnet

Snitflader & integration med ASES

ERP, CRM og webshop forbundet ordentligt