Pub/Sub is where many systems start. Messaging patterns is how they survive production.
Publish/Subscribe is often the first step teams take when moving toward asynchronous, message-driven systems. It feels simple, flexible, and decoupled—but real-world systems quickly expose its limits. Duplicates happen. Messages get lost. Workflows stall halfway through. Failures don’t disappear; they become harder to reason about.
This full-day workshop is about what comes after pub/sub.
Through a series of practical scenarios, we’ll explore the messaging patterns that experienced teams rely on to build reliable, observable, and operable distributed systems. We’ll move beyond theory and focus on why these patterns exist, when to apply them, and what trade-offs they intentionally make.
You’ll work through concrete problems such as:
Preventing data loss without distributed transactions
Coordinating long-running business workflows across services
Scaling consumers safely under load
Routing messages based on intent, not just topics
Making failures recoverable instead of catastrophic
Patterns covered include (but are not limited to):
Outbox and Idempotency
Sagas (orchestration vs choreography)
Competing Consumers and back-pressure
Scatter-Gather
Claim Check and large message handling
Routing topologies and messaging bridges
Retries, dead-letter queues, and operational safety nets
Rather than presenting patterns in isolation, we’ll combine and contrast them to show how they reinforce each other.
By the end of the day, you’ll be able to:
Recognise the failure modes of naïve pub/sub systems
Choose the right messaging pattern for a given problem
Design workflows that survive crashes, retries, and partial failures
Reason about consistency, throughput, and resilience with confidence
Apply messaging patterns deliberately