John Weldon

NATS & Distributed Systems

Articles on NATS messaging, JetStream, and distributed systems operations.


Transparent Multi-Region Routing with NATS Subject Mappings

Deploy the same application to any region without code changes. Let server-side subject mappings handle the routing.

Why Your JetStream Handler Runs Twice

JetStream message redelivery is not a bug. But the defaults will surprise you.

What Flush() Actually Does in NATS

NATS Flush is not what you think. It's a round-trip confirmation, not a buffer dump.

Recovering a JetStream Cluster After Quorum Loss

A step-by-step guide to recognizing and recovering from JetStream quorum loss.

Why NATS SubscribeSync Uses 512KB Per Subscription

A customer reported NATS using 166x more memory per subscription than Redis. They were right -- and it's by design.

How NATS Lame Duck Mode Actually Works

The protocol coordination behind zero-downtime NATS server restarts.

Designing NATS Subject Schemas

Subject design is the first decision in a NATS deployment and the hardest to change later. Here's how to get it right.