NATS
A messaging system written in Go.
Core NATS is just a pub/sub message broker. It does not store messages, so if nobody is subscribed to a topic, the messages are lost.
JetStream is a persistence layer for Core NATS that stores messages. It can be used as a persistent queue and as a key-value store.
Core NATS is limited to at-most-once message delivery, while JetStream supports at-least-once and exactly-once (with additional client requirements).
Features:
- Single binary server
- Builtin TLS encryption
- Wildcard subject support
Supported patterns:
- Publish-subscribe (one-to-many aka fan-out): all subscribers receive a message
- Request-reply (one-to-one): built on top of publish-subscribe, supports sync and async responses
- Queue groups (one-to-one): publish-subscribe + load balancing: a random subscriber receives a message