Gunnar Morling
@gunnarmorling.dev
Ins and Outs of the Outbox Pattern
oatsy40 https://flic.kr/p/FvD3mP (CC BY 2.0)
🦋
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
#OutboxPattern · @gunnarmorling.dev
Agenda
Slide 4
Slide 4 text
#OutboxPattern · @gunnarmorling.dev
● Technologist at Confluent
● Former project lead of Debezium
● kcctl 🧸, JfrUnit, ModiTect,
MapStruct
● One Billion Row Challenge 1⃣🐝🏎
● Java Champion
Gunnar Morling
Slide 5
Slide 5 text
#OutboxPattern · @gunnarmorling.dev
The Problem
How to…
Update a service’s database…
…AND notify other services?
Consistently.
Slide 6
Slide 6 text
#OutboxPattern · @gunnarmorling.dev
Dual Writes…
…are prone to inconsistencies
Slide 7
Slide 7 text
The Outbox Pattern
Elisabeth Hölzl https://flic.kr/p/m7rKFr (CC BY-SA 2.0)
Log-based CDC
Barry Silver https://flic.kr/p/8A6XQV (CC BY 2.0)
Slide 18
Slide 18 text
#OutboxPattern · @gunnarmorling.dev
Debezium
Slide 19
Slide 19 text
#OutboxPattern · @gunnarmorling.dev
Debezium
New and Lesser Known Features
● Incremental snapshots
● JDBC sink connector
● Official support for MariaDB
● Re-Select post processor
● WASM-based SMT
Slide 20
Slide 20 text
#OutboxPattern · @gunnarmorling.dev
Moving to the Commonhaus Foundation
#OutboxPattern · @gunnarmorling.dev
Consumer Idempotency
How to Identify Duplicates?
● A unique value
● Not a database sequence
● An increasing value, e.g. PG LSN
Slide 32
Slide 32 text
Discussion
Lars K. Jensen https://flic.kr/p/7n4tJL (CC BY-SA 2.0)