Cloud messaging for microservices # NATS messaging for microservices Use NATS for messaging in distributed systems and microservices. Performance depends on network, deployment location, resources, and workload. [Get started](https://panel.deplomo.com/signup)[Back to marketplace](/marketplace) ## NATS features and deployment options NATS provides messaging features in a container-based deployment. Configure resources and network access for your workload. ### NATS messaging patterns and performance NATS is designed for lightweight messaging, including real-time workloads. Throughput and latency depend on deployment, network, and workload. ### Go implementation and resource use NATS is written in Go. Resource use depends on configuration, message volume, and workload. ### Pub/Sub and Request-Reply communication patterns NATS supports publish-subscribe and request-reply patterns; queue groups are available for distributing messages among subscribers. ### JetStream persistence (requires configuration) NATS JetStream can provide stream and key-value storage when enabled and configured with suitable persistent storage. ### Container-based messaging service NATS can run in a container. Clustering, horizontal scaling, and recovery require supporting configuration and infrastructure. ### Authentication and transport security NATS supports authentication and TLS-related options. Available security settings depend on the server configuration. ## Frequently asked questions about NATS Answers to common questions about NATS deployment, messaging patterns, and optional JetStream configuration: What is NATS, and how is it used in microservices? How does NATS compare with Kafka and RabbitMQ? How do you deploy and connect to NATS on Deplomo Cloud? Does the nats server provide persistence of messages? Which protocols and client libraries does NATS support? ## NATS: messaging for distributed systems NATS is an open-source messaging system used in distributed applications. It supports several communication patterns; performance, availability, and persistence depend on the deployment and configuration. ### NATS compared with Kafka and RabbitMQ Messaging systems have different resource, routing, persistence, and maintenance requirements. Compare them based on the features and workload your application needs.
| Comparison criteria | NATS template on Deplomo Cloud | Apache Kafka (Kafka) | RabbitMQ |
|---|---|---|---|
| Resource use | Depends on server configuration and workload | Depends on server configuration and workload | Depends on server configuration and workload |
| Message latency | Depends on network, workload, and configuration | Depends on network, workload, and configuration | Depends on network, workload, and configuration |
| Setup and deployment | Container deployment; availability depends on service status | Setup requirements depend on the chosen Kafka deployment | Setup requirements depend on the chosen RabbitMQ deployment |
| Messaging and storage features | The template supports NATS messaging; optional features require configuration | Kafka supports retained event logs, depending on configuration | RabbitMQ uses exchanges and routing keys |
| Operations and maintenance | Requirements depend on configuration and operational needs | Requirements depend on configuration and operational needs | Requirements depend on configuration and operational needs |