Gå til innholdet

Transactional Outbox

En outbox lagrer en endring i forretningsdata og den utgående meldingen samlet. En separat prosess publiserer meldingen senere.

API-er og datakontrakter

En Transactional Outbox lagrer en endring i forretningsdata og en varig oppføring for den utgående meldingen i samme lokale databasetransaksjon. En separat prosess, en relay, leser oppføringene og publiserer dem til en meldingsbroker. Det tetter gapet der databasetransaksjonen har lykkes, men programmet aldri kommer til det etterfølgende sendeforsøket.

I et fiktivt eksempel får supportsaken S-27 statusen «lukket». Tjenesten lagrer den nye statusen og hendelsen E-27 sammen. Mislykkes transaksjonen, rulles begge endringene tilbake. Lykkes commit og tjenesten deretter krasjer, blir hendelsen liggende for senere publisering.

Publisering og behandling er separate trinn

Hvis relay-prosessen publiserer E-27 og krasjer før resultatet lagres, kan den publisere meldingen på nytt. Mottakeren må håndtere gjentatte leveringer trygt, for eksempel med en Transactional Inbox. En outbox alene garanterer ikke at virkningen oppstår nøyaktig én gang på tvers av database, broker og mottaker.

Fastsett hvordan ventende oppføringer finnes, feil blir synlige og hendelser for hver sak ved behov publiseres i rekkefølge. Opprydding og omstart trenger også regler. CDC kan gi et teknisk grunnlag for relay-prosessen; å fange opp vilkårlige radendringer definerer ikke i seg selv en forretningshendelse.

Kilder