There are memory requirements that come with managing subscriptions, so while they’re technically unlimited, it’s a good idea to scope them in advance (using a . to separate each level in a hierarchy). Each level in a hierarchy is a separate token and can be used with wildcards to fine-tune subscriptions, behaving like a namespace.
Deploying NATS servers
A NATS server can be deployed in many ways, with support for most common OSes. If you’re planning to use it as part of an Azure application, you can choose between Linux and Windows, with x86 and Arm64 builds. You can start small, with the cheapest possible host VM, and scale up as necessary. By taking advantage of NATS’ minimal hardware requirements, starting with one core and 32MB RAM, it’s an economical choice that balances between server and networking performance.
Although NATS is often used to route messages without storing them, it includes a message queue service called JetStream. This provides a shared history across all the NATS servers in a cluster, allowing clients to retrieve messages at any time. This is useful, say, if you’re building a mobile app that needs to be able to synchronize events with a server if it goes offline for any time.