John Weldon

Writing

Technical articles, observations, and occasional personal reflections.


Per-Region Service Routing with NATS Subject Mappings

Apps publish to one subject everywhere. Server-side subject mappings, scoped per cluster in a super-cluster, route to the active regional service without application changes.

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 ~100x 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.