whatisgithub

What is memq?

kelseyhightower/memq — explained in plain English

Analysis updated 2026-07-17 · repo last pushed 2016-06-04

35GoAudience · developerComplexity · 2/5DormantSetup · easy

In one sentence

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.

Mindmap

mindmap
  root((repo))
    What it does
      In memory queue
      Relay between services
      Decouples senders receivers
    Tech stack
      Go
    Use cases
      Teach distributed systems
      Demo microservices
      Test message flow
    Audience
      Educators
      Workshop developers
    Limits
      Not for production
      No durability

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Run a workshop or demo that shows how a message queue decouples two services in a distributed system.

USE CASE 2

Test how your application behaves when a downstream service is slow or temporarily unavailable.

USE CASE 3

Teach distributed systems concepts without installing and configuring a full production message queue.

What is it built with?

Go

How does it compare?

kelseyhightower/memqinternetkafe/cfsearchduckbugio/flock
Stars353536
LanguageGoGoGo
Last pushed2016-06-04
MaintenanceDormant
Setup difficultyeasymoderatehard
Complexity2/52/54/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

In-memory only, all messages are lost if the process restarts, so it is not suitable for production.

No license information is mentioned in the explanation.

So what is it?

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.

Copy-paste prompts

Prompt 1
Explain how memq relays messages between two parts of a system and why that decouples them.
Prompt 2
Help me set up a quick demo using memq to show what happens when a consumer service goes down.
Prompt 3
Show me how an in-memory message queue like memq differs from a production-grade queue like Kafka or RabbitMQ.
Prompt 4
Walk me through the tradeoffs of keeping messages only in RAM versus persisting them to disk.

Frequently asked questions

What is memq?

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.

What language is memq written in?

Mainly Go. The stack also includes Go.

Is memq actively maintained?

Dormant — no commits in 2+ years (last push 2016-06-04).

What license does memq use?

No license information is mentioned in the explanation.

How hard is memq to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is memq for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.