Anyone using NATS?

Viewed 935

Anyone using NATS

What's your use case and how has your experience been with it so far?

4 Answers

I’ve been using NATS in a production trading environment for about two years.

The first use case is for disseminating market/vendor data. My particular business is not latency sensitive, but we regularly observe sustained rates of 10s to 100s of thousands of messages per second, which is anywhere from several hundred gigabytes to multiple terabytes of data per day. We have 50 or so publishers and probably 150 subscribers. This use case is a mix of traditional pub-sub and some feeds configured as streams.

The other use case is for orders and transactions. Here we use a mix of request-reply (between components) and durable consumers (streams) where processing must be guaranteed. While the message rates are much lower, the payload sizes are quite a bit larger.

I’ve been very happy with my decision to build on top of NATS, and it wasn’t without a bit of due diligence: I benchmarked Kafka, RabbitMQ, Redis, and NATS with our specific workloads in mind. The ratio of high performance to low administrative overhead is perfect for us.

Our environment consists of C++, Go, Python, JS, and Rust, with all but Rust interacting with NATS on a daily basis, and we use MsgPack as the payload format for all NATS messaging.

My goal with NATS was to pub/sub events on a web site. Like what is my new or updated tasks?

But I did not get it to work. Lack of time or knowledge maybe. It is still on my to do list...

Been using it at nakama.social as a pubsub system for realtime stuff.
Works great and its very lightweight. It barely uses some resources compared to other components of the whole app.
Its a great fit for Go.

Also been using Nats in production and has been a breeze to connect all my microsservices together and it's very light, uses about 8mb to 20mb ram and CPU usage is quite low as well