Three attempts, one second apart, applied to every consumer regardless of what it does. One retry policy across four consumers means three of them are wrong, and the…
A message that cannot be processed and must not be skipped, in a stream where order matters. Halting is the right answer when skipping would corrupt the state…
Classic mirrored queues have been the deprecated way to get replication for a while, and the replacement has different failure behaviour worth understanding first. The throughput cost is…
A test that dispatched a job and then asserted on the database is testing two things and failing for two reasons. Splitting at the queue boundary is the…
A three-step process across two external systems, needing compensation when step two fails, and no appetite for a workflow engine. A state machine in a table, advanced by…
A message shape is a contract with every consumer that exists and every consumer that is mid-deploy. Adding an optional field is safe because an old consumer ignores…
An event listener marked as queued, doing 20 seconds of PDF generation, and failing in a way that made the original event look like the problem. A queued…
Publishing to a broker inside a database transaction is two systems and one commit, which cannot be made atomic. The index on (published_at, id) with nulls first is…