Part 16 · Capstone & Mock Interview

At-least-once delivery với outbox và explicit saga

Async giảm temporal coupling nhưng thêm duplicate, ordering, lag và reconciliation; “exactly once” không xóa external side effects.

Event contract

Event ID/type/version/time, aggregate ID/version, correlation/causation, minimal domain payload. Schema evolution backward/forward policy; partition key theo ordering requirement.

Transactional outbox

Business row và outbox insert cùng local transaction; relay publish rồi mark/checkpoint. Crash có thể publish duplicate nên consumer inbox/idempotent state transition vẫn bắt buộc.

Saga

OrderCreated → PaymentRequested/Completed/Failed → OrderConfirmed/Cancelled. Orchestration rõ state/timeout; choreography ít coordinator nhưng flow khó nhìn. Compensation là business action, không rollback thời gian.

Operations

Lag/oldest age, retry/DLQ, poison handling, replay authorization và audit. Reprocessing phải version-aware, bounded và không phát external effect trùng.

Apache Kafka Documentation · RabbitMQ Reliability Guide