What is Go NSQ?
NSQ is a great distributed queue. I’ve used it successfully as a primary building block for large-scale distributed systems. Here are some of its features:
- Support distributed topologies with no SPOF.
- Horizontally scalable (no brokers, seamlessly add more nodes to the cluster).
- Low-latency push based message delivery (performance).
- Combination load-balanced and multicast style message routing.
- Excel at both streaming (high-throughput) and job oriented (low-throughput) workloads.
- Primarily in-memory (beyond a high-water mark messages are transparently kept on disk).
- Runtime discovery service for consumers to find producers (nsqlookupd).
- Transport layer security (TLS).
- Data format agnostic.
- Few dependencies (easy to deploy) and a sane, bounded, default configuration.
- Simple TCP protocol supporting client libraries in any language.
- HTTP interface for stats, admin actions, and producers (no client library needed to publish).
- Integrates with statsd for real-time instrumentation.
- Robust cluster administration interface (nsqadmin)