Skip to content

Event Streaming with Symfony Messenger

Avatar of Max Beckers Max Beckers

State-based persistence keeps the current row and forgets the history that produced it. Event streaming inverts that: append immutable, past-tense events, and let any number of consumers replay or react to them. Symfony Messenger provides most of the plumbing out of the box, if you wire it the right way.

In this talk, we'll build a working event-driven order pipeline on Messenger and RabbitMQ. We'll cover the fundamentals: immutability, ordering, snapshots, idempotency, and compensating events for refunds. We'll then dive into Symfony specifics: per-consumer routing with `#[AsMessageHandler(fromTransport: '...')]`, one exchange shared by publishers and consumers with `auto_setup: false`, and the Envelope mechanism that prevents an infinite re-dispatch loop on the worker side.

Production lessons close the session: dead letters, retry strategies, Supervisor process counts, and why you should drop the PHP serializer from day one.

Delivered in English
Room:
Symfony

Friday, June 12, 2026 at 09:35 AM – 10:10 AM