finds.dev← search

// the find

nats-io/nats-streaming-server

★ 2,525 · Go · Apache-2.0 · updated Apr 2024

NATS Streaming System Server

NATS Streaming Server (Stan) is a persistent messaging layer built on top of NATS, adding durable subscriptions, message replay, and at-least-once delivery. It was a popular choice for teams who needed Kafka-like guarantees without the JVM overhead, but it has been officially deprecated and superseded by NATS JetStream, which is now built directly into the NATS server.

The Raft-based clustering implementation is solid — fault tolerance and leader election are well-tested with dedicated test files for clustering, snapshots, and transport. Storage backends are genuinely pluggable: in-memory, file-based, and SQL (MySQL/Postgres) are all real options, not afterthoughts. The test coverage is extensive — nearly every server/*.go file has a matching *_test.go, including edge cases like store failures and message redelivery. File store crypto support (cryptostore.go) is a nice inclusion for regulated environments.

This repo is dead. Security fixes stopped June 2023 per the README's own warning, and the last push was April 2024 — maintenance mode at best. The protocol is Stan-specific (see spb/protocol.proto), meaning your clients are locked into a deprecated SDK with no migration path except rewriting against JetStream's different API. JetStream has overtaken it on every dimension: better performance, active development, and it doesn't require a separate server process. Anyone adopting this today is choosing technical debt from day one.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →