kelseyhightower/memq — explained in plain English
Analysis updated 2026-07-17 · repo last pushed 2016-06-04
Run a workshop or demo that shows how a message queue decouples two services in a distributed system.
Test how your application behaves when a downstream service is slow or temporarily unavailable.
Teach distributed systems concepts without installing and configuring a full production message queue.
| kelseyhightower/memq | internetkafe/cfsearch | duckbugio/flock | |
|---|---|---|---|
| Stars | 35 | 35 | 36 |
| Language | Go | Go | Go |
| Last pushed | 2016-06-04 | — | — |
| Maintenance | Dormant | — | — |
| Setup difficulty | easy | moderate | hard |
| Complexity | 2/5 | 2/5 | 4/5 |
| Audience | developer | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
In-memory only, all messages are lost if the process restarts, so it is not suitable for production.
Memq is a lightweight message queue that lives entirely in a computer's memory. Think of it as a temporary relay station: one part of your application drops off messages, and another part picks them up. It's designed to help developers test how their systems behave when different components need to talk to each other. At a high level, a message queue sits between parts of a distributed system (an app split across multiple machines or services). Instead of service A calling service B directly, A sends a message to the queue, and B reads it when ready. This decouples the two sides, if B is slow or temporarily down, A can keep sending without breaking. Memq handles this relay entirely in RAM, meaning it's fast but everything disappears if the process restarts. The key thing to understand is what memq is not. It's not built for production. The creator explicitly says it's a prototype meant for workshops and demos. So if you're a founder or PM thinking about using this in your actual product, stop, it won't hold up. The value here is for people learning or demonstrating how distributed systems work without the overhead of setting up a full production-grade queue. Who would use it? Developers running training sessions or building demos about distributed infrastructure. Maybe you're showing how a microservices architecture handles failures, or testing how your system behaves when messages flow between services. Instead of installing and configuring a heavy-duty message queue, you spin up memq and focus on the concepts you're teaching. It gets out of the way. The main tradeoff is obvious but worth stating: by keeping everything in memory, memq sacrifices durability for simplicity. If the process crashes, every message in the queue is gone. That's fine for a five-minute demo but catastrophic in a real system processing payments or user signups. The README doesn't go into detail about performance characteristics, supported features, or API design, so if you're curious beyond the core concept, you'd need to dig into the code itself.
A lightweight, in-memory message queue for demos and workshops that shows how parts of a distributed system pass messages to each other, not meant for production use.
Mainly Go. The stack also includes Go.
Dormant — no commits in 2+ years (last push 2016-06-04).
No license information is mentioned in the explanation.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
double-check against the repo, no cap.