Naar de inhoud

Transactional Outbox

Een outbox slaat een bedrijfswijziging en het bijbehorende uitgaande bericht samen op. Een apart proces publiceert het bericht later.

API's en datacontracten

Een Transactional Outbox slaat een wijziging in bedrijfsgegevens en een duurzaam record van het uitgaande bericht in dezelfde lokale databasetransactie op. Een apart proces, de relay, leest die records en publiceert ze bij de message broker. Daarmee wordt het gat afgedekt waarin de databasetransactie slaagt, maar de toepassing niet meer aan de daaropvolgende verzendpoging toekomt.

In een fictief voorbeeld krijgt supportticket S-27 de status ‘gesloten’. De dienst slaat de nieuwe status en gebeurtenis E-27 samen op. Mislukt de transactie, dan worden beide wijzigingen teruggedraaid. Slaagt de commit en valt de dienst daarna uit, dan blijft de gebeurtenis opgeslagen voor latere publicatie.

Publiceren en verwerken zijn aparte stappen

Publiceert de relay E-27 en valt deze uit voordat het succes is vastgelegd, dan kan hetzelfde bericht opnieuw worden gepubliceerd. De ontvanger moet herhaalde afleveringen veilig verwerken, bijvoorbeeld met een Transactional Inbox. De outbox alleen garandeert geen precies eenmalig effect over database, broker en ontvanger heen.

Bepaal hoe u wachtende records vindt, fouten zichtbaar maakt en waar nodig de publicatievolgorde per ticket bewaart. Ook opschoning en hervatting vragen om regels. CDC kan de technische basis voor de relay vormen; willekeurige rijwijzigingen vastleggen definieert op zichzelf nog geen bedrijfsgebeurtenis.

Bronnen