Analysis updated 2026-06-24
Run a pub-sub broker that holds up on lossy networks where TCP brokers stall
Fan out messages to many subscribers without one slow client delaying others
Build a low-latency telemetry pipeline using a fixed six-byte header format
Benchmark Flume against NATS and Redis under simulated packet loss
| iwetan77/flume | danterolle/loqi | mtojek/prometheus-instrumentation-in-go | |
|---|---|---|---|
| Stars | 2 | 2 | 2 |
| Language | Go | Go | Go |
| Last pushed | — | — | 2018-11-04 |
| Maintenance | — | — | Dormant |
| Setup difficulty | moderate | moderate | easy |
| Complexity | 4/5 | 2/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Needs a Go toolchain that supports QUIC libraries, and TLS certificates since QUIC mandates them.
Flume is a publish-subscribe message broker written in Go that uses QUIC, the network protocol underneath HTTP/3, as its transport. A broker is the middle process that lets one program send a message on a topic and any number of other programs subscribe to that topic and receive it. The novel thing about Flume is that every subscriber gets its own dedicated QUIC stream. The README spends most of its space explaining the why. Most brokers, including NATS and Redis pub/sub, run on TCP, where all data shares one ordered byte stream per connection. If one subscriber reads slowly, packets pile up and can delay other consumers, a problem called head-of-line blocking. Existing brokers work around it at the application layer by buffering, dropping messages, or disconnecting slow consumers. QUIC, by contrast, supports many independent streams on one connection, each with its own flow control. So in Flume a stalled subscriber only stalls its own stream, and the others keep moving. The flow is straightforward. A client opens a QUIC connection to the broker, opens a control stream, and sends a SUBSCRIBE frame. The broker then opens a new stream back to the client dedicated to that topic, and all messages for that topic travel on that stream only. If the subscriber falls behind, QUIC handles the backpressure on that stream in isolation. The wire format is binary with a fixed six-byte header: one byte for message type, one for topic-name length, four for payload length, then the topic and payload bytes. No JSON, no protobuf. The README includes a localhost benchmark under 10 percent simulated packet loss showing roughly 12 ms p99 latency versus 340 ms for NATS and 410 ms for Redis, attributed to QUIC's per-stream loss recovery. The project is MIT licensed.
Go pub-sub broker on QUIC where each subscriber gets its own stream, so a slow consumer cannot block others through head-of-line backpressure.
Mainly Go. The stack also includes Go, QUIC.
MIT license, so you can use, modify, and redistribute it freely as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.