Transactional Outbox
En outbox gemmer en ændring i forretningsdata og den udgående hændelse samlet. En separat proces publicerer meddelelsen senere.
En Transactional Outbox gemmer en ændring i forretningsdata og en varig registrering af den udgående meddelelse i samme lokale databasetransaktion. En separat proces, en relay, læser registreringerne og publicerer dem til en meddelelsesbroker. Det lukker hullet, hvor databasetransaktionen er gennemført, men programmet aldrig når det efterfølgende afsendelsesforsøg.
I et fiktivt eksempel skifter supportsag S-27 status til »lukket«. Tjenesten gemmer den nye status og hændelsen E-27 sammen. Fejler transaktionen, rulles begge ændringer tilbage. Gennemføres commit, og tjenesten derefter går ned, bliver hændelsen liggende til senere publicering.
Publicering og behandling er separate trin
Publicerer relay-processen E-27 og går ned, før den registrerer resultatet, kan den publicere meddelelsen igen. Modtageren skal kunne håndtere gentagne leveringer sikkert, for eksempel med en Transactional Inbox. En outbox alene garanterer ikke, at virkningen kun indtræffer én gang på tværs af database, broker og modtager.
Fastlæg, hvordan ventende registreringer findes, fejl bliver synlige, og hændelser for hver sag om nødvendigt publiceres i rækkefølge. Oprydning og genstart kræver også regler. CDC kan være et teknisk grundlag for relay-processen; registrering af vilkårlige rækkeændringer definerer ikke i sig selv en forretningshændelse.
Kilder
Relaterede begreber
- DatabasetransaktionEn databasetransaktion samler relaterede ændringer, så de enten gemmes samlet eller rulles samlet tilbage.
- Transaktionel inboxEn transaktionel inbox bruger varige meddelelsesregistreringer til at beskytte lokal behandling mod dobbelte leveringer.
- Change data captureChange data capture opfanger ændringer i databasen, så andre applikationer kan behandle dem.
- Server-Sent EventsServer-Sent Events sender tekstmeddelelser fra server til klient via HTTP, eksempelvis om en baggrundsopgaves fremdrift.
- ETagEt ETag identificerer en bestemt repræsentationsversion af en HTTP-ressource og understøtter betingede opslag eller ændringer.
- Cross-Origin Resource SharingCORS styrer browserens adgang til svar fra en anden origin. Det erstatter hverken login til API’et eller kontrol af rettigheder.
Dit projekt med ASES
Beskriv dit projekt for os. Vi vender tilbage med en første vurdering.