Chapter plan
What you will complete
01Use @Async and Application Events DeliberatelyConfigure bounded executors, propagate context, and distinguish thread handoff from durable messaging.Name and size every executorHandle rejection and shutdown explicitlyUse local events for in-process decoupling, not durability 40 min02Publish Reliably with Kafka & the Outbox PatternClose the database-plus-broker dual-write gap and consume at-least-once messages safely.Commit business state and outbox record atomicallyMake consumer effects idempotentChoose partition keys from required ordering guarantees 55 min03Design Retries, Ordering & Dead LettersClassify transient and permanent failures without building an invisible infinite retry loop.Use bounded exponential backoff with jitterPreserve ordering only where the domain requires itTreat dead letters as an operational workflow with ownership 45 min04Production Implementation: Outbox Order EventsCommit events beside business state with the outbox pattern, consume idempotently, and prove both under failure.Write the outbox row in the same transaction as business dataPublish via a relay and consume deduplicated on event idProve no lost and no duplicate side effects under crash 50 min
Module outcome
Choose local async work, in-process events, or a broker and state the failure contract of each.
Mental model
Async processing trades temporal coupling for queues, retries, duplicate delivery, and explicit ownership of eventual state.
Module checkpoint
Reliable order events
Publish order-created events through an outbox and consume them idempotently.
- Bounded executor metrics
- Outbox relay
- Duplicate-delivery test
Final module assessment
Ready to prove mastery?
Complete all 50 questions after finishing the module lessons and checkpoint.