
Ivan describes in the issue that basically it receives a message, and once it receives a message, it send it directly to any subscriber that has shown interest into something. That’s how I would describe NATS.Īctually, one of the really nice, concise explanations from NATS is from Ivan from the NATS team, describing that someone was complaining that a NATS server was sending duplicate messages. It’s like a pure publish-subscribe messaging system, but on top of this basic pub-sub you could do also basic request-response for RPC type of use cases. Okay, so NATS is a high-performance messaging system, and you could use it as a transport to be able to communicate with clients that connect through it. Those are all fixed now, but I like finding these weird corner cases with the buffers from a NATS server where you could make it crash… But they have all been fixed in master, so yeah, if someone manages to make it crash somehow I will be fond of looking into it. I’ve managed to crash it a number of times, but it was by making these weird clients trying to attack it, basically. It really does stay up for long periods of time. So yeah, I guess it’s well suited for that kind of a use case. So yeah, it is true…Īt the beginning - with the original Ruby implementation - they didn’t have clustering from day one, but it was still possible, for example, to do basic failover scenarios with NATS, and the recovery was pretty fast still. If you have a client that is trying to do some harm, the server will basically take out the connection, and other clients would still be allowed to communicate and basically not be impacted by these other parts of the system. Also because it tries to protect itself from bad actors within the system. I guess it is because of the simplicity of how it does much less - I think that plays a big part here. I like that confidence that it was going to be basically around and available for the components to be able to communicate.

As a person that was operating on these large clusters, having the uptime, having everything available was critical.
