7 ms·
Since people are mentioning current examples, putting message queues everywhere is a terrible modern pattern. Looks great on the surface. Ride through transien
by deviledeggs 5y ago
Since people are mentioning current examples, putting message queues everywhere is a terrible modern pattern.
Looks great on the surface. Ride through transient failures. Easier load balancing. Even out load spikes. But underneath, you're adding bufferbloat to your system.
I've worked on systems where every service communicates with event queues. Debugging these things is hell. Problems with eventual consistency everywhere. Duplicate requests chilling in the queues where you can't see or get rid of them. Ordering issues. Bad messages/events clogging up queues. Upgrade nightmares whenever endpoints change.
Adding a message queue between your services instead of doing things synchronously is a great way to sabotage a project.
- rjh29 5y agoSome of those can be resolved by using a distributed log (Kafka, Redis Streams) rather than a message queue. Not all of them though!