Gå til innholdet

Transaksjonell inbox

En transaksjonell inbox bruker varige meldingsregistreringer for å beskytte lokal behandling mot doble leveringer.

Også kjent somTransactional inbox
API-er og integrasjon

En transaksjonell inbox bruker varige meldingsregistreringer for å beskytte lokal behandling mot doble leveringer. I varianten som beskrives her, lagres registreringen av en behandlet melding og den tilhørende endringen i forretningsdataene i samme databasetransaksjon.

En fiktiv tjeneste med konsumentnavnet report-worker mottar meldingen E-42. Den registrerer kombinasjonen av konsument og meldings-ID i sin inbox og øker en rapportteller fra 6 til 7. Begge endringene committes samlet. En unikhetsregel i databasen for denne kombinasjonen beskytter også når flere instanser arbeider samtidig. Å kontrollere først og skrive etterpå er ikke tilstrekkelig i seg selv.

Tidspunktet for krasjet er viktig

Mislykkes transaksjonen før commit, blir verken inboxregistreringen eller tellerendringen stående. Lykkes commit, men den etterfølgende kvitteringen til brokeren går tapt, kan E-42 komme igjen. Den eksisterende registreringen hindrer da en ny økning til 8. Kvitteringen til brokeren er ikke selv en del av denne lokale databasetransaksjonen.

Idempotens beskriver den trygge virkningen av gjentakelse; en inbox er et mulig implementasjonsmønster. En outbox lagrer derimot utgående meldinger sammen med den lokale endringen. Inboxen alene garanterer ikke at et eksternt HTTP-kall utføres eller en e-post sendes nøyaktig én gang. Lagringstiden for meldings-ID-er må passe til det mulige tidsrommet for ny levering og replay; registreringer som fjernes for tidlig, beskytter ikke lenger mot senere duplikater.

Kilder

Artikler om temaet

API-er og integrasjon med ASES

ERP, CRM og nettbutikk ryddig koblet sammen