Over the past year, we worked through a long list of reliability issues across our messaging infrastructure. Looking back, what stands out is how few of these issues were actually specific to RabbitMQ, even though that's the broker we use.
The trigger was a series of incidents in the second half of 2025 (about 20 in total), accumulating to over 170 hours of impact across our regional clusters. Only a handful were genuine broker bugs; mostly, what we uncovered when we dug in was of our own making: poor configuration choices, overly optimistic assumptions about delivery semantics and a slow buildup of decisions nobody wanted to revisit because, well, the system kept working.
What followed was a get-well plan, which we have now mostly completed. We migrated to quorum queues, deployed an AMQP proxy in front of every cluster, rolled out idempotency fixes for the hardest-hit services and established SLOs that actually measure what matters. Since July, the incident rate has dropped sharply: a sign that the program is working as intended.
What surprised us as we worked through the plan was how little of what we found was specific to RabbitMQ. The same six patterns would have surfaced with Kafka, SQS, Pulsar, NATS, or really any system that moves messages between services. The terminology changes, but the underlying issues remain the same.
Here are the patterns we kept running into.