License & Deployment Mix: 18 tools – 10 OSS, 4 SaaS. (OSS and SaaS counts can overlap when an open-source tool also offers a vendor-hosted edition.)
What Is Message Queue / Event Streaming Software?
Message queue and event streaming software provides asynchronous communication between distributed systems, services, and applications. Instead of direct service-to-service calls, a message broker or streaming platform acts as an intermediary – decoupling producers from consumers and enabling reliable, scalable data exchange.
These systems fall into two broad architectural patterns:
Message Queues (Traditional Brokers)
Message queues deliver messages from producers to consumers using point-to-point or publish/subscribe patterns. Once a consumer acknowledges a message, it is removed from the queue. Key characteristics:
- Point-to-point – one producer, one consumer per message; work distribution across workers
- Pub/sub – one producer, many consumers; each subscriber gets a copy of the message
- Delivery guarantees – at-most-once, at-least-once, or exactly-once semantics
- Message acknowledgment – consumers confirm receipt; unacknowledged messages are redelivered
- Dead letter queues – failed messages routed to a separate queue for inspection
- Priority queues – messages processed in priority order rather than FIFO
- Protocols – AMQP 0-9-1, AMQP 1.0, MQTT, STOMP, OpenWire, JMS
Event Streaming (Log-Based)
Event streaming platforms treat events as an immutable, append-only log. Consumers read from the log at their own pace without removing events. Key characteristics:
- Append-only log – events are immutable and retained for a configurable period (or forever)
- Consumer offsets – each consumer tracks its position in the log independently
- Replay – consumers can rewind and reprocess historical events
- Partitioning – topics are split into partitions for parallel processing
- Compaction – log compaction retains only the latest value per key
- Stream processing – built-in or integrated stream processing engines (KStreams, Flink, etc.)
Hybrid Systems
Many modern systems blur the line between queues and streaming. NATS JetStream, RabbitMQ Streams, and Apache Pulsar support both patterns. Redis Streams provides log-based semantics within a general-purpose data store.
The information on these pages was researched by a combination of human review and large language models. To suggest an addition or correction, please contact us. Prepared by Rhodium Systems Inc., author of the ResorsIT platform — a unified IT operations management platform for IT teams and MSPs that integrates a curated suite of open-source, commercial, and SaaS applications into a single system with shared identity, single sign-on, access control, and a common audit trail. Use this catalogue only as a starting point for your own research, and review any tool carefully against your own requirements before relying on it. Catalogue data version 2026.197.
Comparison
Feature Matrix
Open Source
| Feature | Kafka | RabbitMQ | NATS | Pulsar | Redis Streams |
|---|---|---|---|---|---|
| Pub/Sub | Yes | Yes | Yes | Yes | Yes* |
| Queuing | CG | Yes | JS | Yes | CG |
| Streaming | Yes | Streams | JS | Yes | Yes |
| Persistence | Yes | Yes | JS | Yes | RDB/AOF |
| Exactly-once | Yes | No | JS | Yes | No |
| Ordering | Part. | Queue | Subj. | Part. | ID |
| Replay | Yes | No** | JS | Yes | Yes |
| Schema reg. | Ext. | No | No | Built-in | No |
| Dead letter | No*** | Yes | No | Yes | No |
| Priority | No | Yes | No | No | No |
| Transactions | Yes | No | No | Yes | No |
| Multi-tenant | No | VHost | Acct. | Yes | No |
CG = via consumer groups JS = via JetStream Part. = per-partition ordering Subj. = per-subject ordering ID = per-stream ID ordering Ext. = external (Confluent Schema Registry) * = Pub/Sub is a separate Redis feature ** = RabbitMQ Streams support replay *** = application-level via error topics
| Feature | ZeroMQ | Mosquitto | ActiveMQ | NSQ | Redpanda |
|---|---|---|---|---|---|
| Pub/Sub | Yes | Yes | Yes | Yes | Yes |
| Queuing | Push/Pull | No* | Yes | Yes | CG |
| Streaming | No | No | No | No | Yes |
| Persistence | No | QoS 1/2 | Yes | Disk | Yes |
| Exactly-once | No | QoS 2** | Txn | No | Yes |
| Ordering | No | Topic | Queue | No | Part. |
| Replay | No | No | No | No | Yes |
| Schema reg. | No | No | No | No | Built-in |
| Dead letter | No | No | Yes | No | No*** |
| Priority | No | No | Yes | No | No |
| Transactions | No | No | Yes | No | Yes |
| Multi-tenant | No | No | No | No | No |
* = MQTT shared subscriptions provide basic work distribution ** = QoS 2 is per-message exactly-once, not transactional *** = application-level via error topics CG = via consumer groups (Kafka-compatible) Part. = per-partition ordering Txn = via JMS transactions
Commercial / Managed
| Feature | Confluent | SQS/SNS | Service Bus | Pub/Sub | Solace |
|---|---|---|---|---|---|
| Pub/Sub | Yes | SNS | Yes | Yes | Yes |
| Queuing | CG | SQS | Yes | Sub. | Yes |
| Streaming | Yes | No | No | Seek | Yes |
| Persistence | Yes | Yes | Yes | Yes | Yes |
| Exactly-once | Yes | FIFO | Sessions | Pull | Txn |
| Ordering | Part. | FIFO* | Sessions | Key | Topic |
| Replay | Yes | No | No | Seek | Yes |
| Schema reg. | Yes | No | No | Yes | No |
| Dead letter | No** | Yes | Yes | Yes | Yes |
| Priority | No | No | No | No | Yes |
| Transactions | Yes | No | Yes | No | Yes |
| Multi-tenant | No | IAM | Namespace | IAM | VPN |
CG = via consumer groups Sub. = via subscriptions (each gets all messages) Part. = per-partition ordering FIFO* = FIFO queues only (3,000 msg/sec limit) ** = application-level via error topics Txn = XA and local transactions VPN = Message VPN isolation
Protocol Support
| Tool | AMQP | MQTT | Kafka | STOMP | HTTP | gRPC | JMS |
|---|---|---|---|---|---|---|---|
| Kafka | No | No | Yes | No | Proxy | No | No |
| RabbitMQ | Yes | Yes | No | Yes | Yes | No | No |
| NATS | No | Yes | No | No | No | No | No |
| Pulsar | AoP | MoP | KoP | No | Yes | No | No |
| Redis Streams | No | No | No | No | No | No | No |
| ZeroMQ | No | No | No | No | No | No | No |
| Mosquitto | No | Yes | No | No | No | No | No |
| ActiveMQ | Yes | Yes | No | Yes | Yes | No | Yes |
| NSQ | No | No | No | No | Yes | No | No |
| Redpanda | No | No | Yes | No | Yes | No | No |
| Confluent | No | No | Yes | No | Yes | No | No |
| SQS/SNS | No | No | No | No | Yes | No | No |
| Service Bus | Yes | No | No | No | Yes | No | Yes |
| Pub/Sub | No | No | No | No | Yes | Yes | No |
| Solace | Yes | Yes | No | No | Yes | No | Yes |
AoP = AMQP on Pulsar (compatibility layer) MoP = MQTT on Pulsar (compatibility layer) KoP = Kafka on Pulsar (compatibility layer) Proxy = via Confluent REST Proxy or equivalent
Deployment Comparison
| Tool | Type | Language | Self-Host | Managed | Min Nodes |
|---|---|---|---|---|---|
| Kafka | Streaming | Java | Yes | Yes | 3 |
| RabbitMQ | Broker | Erlang | Yes | Yes | 3 |
| NATS | Messaging | Go | Yes | Yes | 3* |
| Pulsar | Streaming | Java | Yes | Yes | 6** |
| Redis Streams | Data store | C | Yes | Yes | 3*** |
| ZeroMQ | Library | C++ | N/A | No | N/A |
| Mosquitto | MQTT | C | Yes | No | 1 |
| ActiveMQ | Broker | Java | Yes | Yes | 2 |
| NSQ | Queue | Go | Yes | No | 3**** |
| Redpanda | Streaming | C++ | Yes | Yes | 3 |
| Confluent | Streaming | Java | Yes | Yes | 3 |
| SQS/SNS | Queue/Pub | – | No | AWS | – |
| Service Bus | Broker | – | No | Azure | – |
| Pub/Sub | Streaming | – | No | GCP | – |
| Solace | Broker | C/C++ | Yes | Yes | 2 |
* = 3 for JetStream; 1 for core NATS ** = 3 ZK + 3 BK/broker minimum *** = 3 for Redis Cluster/Sentinel **** = 2+ nsqlookupd + 1+ nsqd -- = fully managed; not applicable
Licensing Comparison
| Tool | License | Type | Cost |
|---|---|---|---|
| Kafka | Apache 2.0 | Open source | Free |
| RabbitMQ | MPL-2.0 | Open source | Free |
| NATS | Apache 2.0 | Open source | Free |
| Pulsar | Apache 2.0 | Open source | Free |
| Redis Streams | RSALv2/SSPLv1/AGPL | Source-avail | Free |
| ZeroMQ | MPL-2.0 | Open source | Free |
| Mosquitto | EPL-2.0 | Open source | Free |
| ActiveMQ | Apache 2.0 | Open source | Free |
| NSQ | MIT | Open source | Free |
| Redpanda | BSL 1.1 | Source-avail | Free* |
| Confluent | Proprietary | Commercial | $$$$ |
| SQS/SNS | Proprietary | Cloud SaaS | Pay-per-use |
| Service Bus | Proprietary | Cloud SaaS | Pay-per-use |
| Pub/Sub | Proprietary | Cloud SaaS | Pay-per-use |
| Solace | Proprietary | Commercial | Free** |
* = BSL converts to Apache 2.0 after 4 years ** = Standard Edition free (limited); Enterprise and Cloud are commercial
SSO / OIDC Comparison
OIDC is the preferred SSO protocol.
| Tool | OIDC | SAML | LDAP | Authentik Notes |
|---|---|---|---|---|
| Kafka | OB* | No | JAAS | OAUTHBEARER for clients; UI tools support OIDC |
| RabbitMQ | Yes | No | Yes | OAuth2 auth backend for UI and clients |
| NATS | No | No | No | JWT/NKey auth; no OIDC integration |
| Pulsar | Yes | No | Yes | OAuth 2.0 for clients and Pulsar Manager |
| Redis Streams | No | No | No | Data store; OIDC not applicable |
| ZeroMQ | No | No | No | Library; OIDC not applicable |
| Mosquitto | No | No | No | JWT plugin; reverse proxy for mgmt |
| ActiveMQ | Ext* | No | Yes | Hawtio OIDC via Keycloak adapter |
| NSQ | No | No | No | Reverse proxy for nsqadmin |
| Redpanda | Yes | No | Ent. | Console OIDC; OAUTHBEARER for clients |
| Confluent | Yes | Yes | Yes | Cloud console SSO; Platform MDS |
| SQS/SNS | IAM | IAM | AD | AWS IAM Identity Center SSO |
| Service Bus | Entra | Entra | AD | Entra ID federation |
| Pub/Sub | GCI | GCI | Sync | Cloud Identity federation |
| Solace | Yes | Yes | Yes | Cloud console + broker OAuth 2.0 |
OB* = SASL/OAUTHBEARER mechanism Ext* = via Hawtio Keycloak adapter IAM = via AWS IAM Identity Center Entra = via Microsoft Entra ID GCI = via Google Cloud Identity Ent. = Enterprise edition only AD = Active Directory / managed AD
Best SSO support: RabbitMQ, Pulsar, Redpanda Console, Confluent Cloud, and Solace have the most complete OIDC/OAuth 2.0 support for both management UI and client connections.
Throughput & Latency (Approximate)
These are approximate ranges based on published benchmarks. Actual performance depends heavily on hardware, configuration, message size, replication factor, and workload pattern.
| Tool | Throughput (msg/sec) | p99 Latency |
|---|---|---|
| Kafka | 1M+ | 5–15 ms |
| Redpanda | 1M+ | 1–5 ms |
| NATS (core) | 10M+ | <1 ms |
| NATS (JetStream) | 500K+ | 1–5 ms |
| Pulsar | 1M+ | 5–20 ms |
| RabbitMQ (classic) | 50K–100K | 1–5 ms |
| RabbitMQ (quorum) | 30K–80K | 2–10 ms |
| Redis Streams | 500K+ | <1 ms |
| ZeroMQ | 10M+ | <0.1 ms |
| Mosquitto | 100K+ | <1 ms |
| ActiveMQ (Artemis) | 100K–300K | 1–10 ms |
| NSQ | 100K–500K | 1–5 ms |
| SQS Standard | Unlimited* | 5–20 ms |
| SQS FIFO | 3K (batch) | 10–50 ms |
| Service Bus | Varies** | 5–50 ms |
| Pub/Sub | Unlimited* | 10–50 ms |
| Solace | 1M+*** | <1 ms*** |
* = auto-scaling; no published limit ** = depends on tier (Basic/Standard/Premium) *** = hardware appliance; software broker lower
Tools
18 tools.
Amazon SQS / SNS
Amazon SQS (Simple Queue Service) and Amazon SNS (Simple Notification Service) are AWS’s core messaging services. SQS provides fully managed message queues; SNS provides fully managed pub/sub notification.
License: Proprietary (proprietary) · Kind: web · Deploy: saas, native · SSO: OIDC
Apache ActiveMQ
Apache ActiveMQ is an open-source enterprise message broker and JMS reference implementation, available as mature Classic (5.x) and next-generation Artemis variants with AMQP, MQTT, and STOMP support.
License: Apache-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
Apache Iggy
Apache Iggy is a persistent message-streaming platform written in Rust – a from-scratch, Kafka-class alternative with streams/topics/partitions, consumer groups, and QUIC/TCP/HTTP/WebSocket transports.
License: Apache-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
Apache Kafka
Apache Kafka is the dominant event streaming platform, originally developed at LinkedIn and open-sourced in 2011.
License: Apache-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
Apache Pulsar
Apache Pulsar is a distributed messaging and streaming platform originally developed at Yahoo and open-sourced in 2016. It became an Apache top-level project in 2018.
License: Apache-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
Azure Service Bus
Azure Service Bus is Microsoft’s fully managed enterprise message broker supporting both message queuing and pub/sub patterns.
License: Proprietary (proprietary) · Kind: web · Deploy: saas, native, k8s · SSO: OIDC
Confluent Cloud
Confluent Cloud is the fully managed Kafka service from Confluent, the company founded by the original creators of Apache Kafka.
License: Proprietary (proprietary) · Kind: web · Deploy: saas · SSO: OIDC, SAML
Eclipse Mosquitto
Eclipse Mosquitto is a lightweight, open-source MQTT message broker implementing MQTT protocol versions 5.0, 3.1.1, and 3.1. It is the reference implementation of the MQTT protocol and part of the Eclipse Foundation’s IoT ecosystem.
License: EPL-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
EMQX
EMQX is the world’s most scalable open-source MQTT broker, designed for IoT and real-time messaging at massive scale.
License: Apache-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
Google Cloud Pub/Sub
Google Cloud Pub/Sub is a fully managed, globally distributed messaging and event streaming service.
License: Proprietary (proprietary) · Kind: web · Deploy: saas, native · SSO: SAML
IBM MQ
IBM MQ is an enterprise message-oriented middleware (MOM) platform that has been in continuous production since 1993 (originally MQSeries).
License: Proprietary (proprietary) · Kind: web · Deploy: native, docker · SSO: none
NATS
NATS is a lightweight, high-performance messaging system designed for cloud-native and edge computing environments.
License: Apache-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
NSQ
NSQ is a realtime distributed messaging platform built at Bitly and open-sourced in 2012. It is designed for simplicity, operational ease, and fault tolerance.
License: MIT (OSS) · Kind: web · Deploy: native, docker · SSO: none
RabbitMQ
RabbitMQ is the most widely deployed open-source message broker, implementing AMQP 0-9-1 as its primary protocol.
License: MPL-2.0 (OSS) · Kind: web · Deploy: native, docker · SSO: none
Redis Streams
Redis Streams is a log-based data structure built into Redis (since Redis 5.0) that provides event streaming capabilities within the Redis ecosystem.
License: LicenseRef-Redis-RSALv2 (source-available) · Kind: web · Deploy: native, docker · SSO: none
Redpanda
Redpanda is a Kafka-compatible event streaming platform written in C++ using the Seastar framework. It is designed as a drop-in replacement for Apache Kafka with significantly lower latency, simpler operations, and no JVM dependency.
License: LicenseRef-Redpanda-RCL (source-available) · Kind: web · Deploy: native, docker · SSO: none
Solace PubSub+
Solace PubSub+ is an enterprise event broker that supports multiple messaging protocols and patterns in a single platform.
License: Proprietary (proprietary) · Kind: web · Deploy: native, docker · SSO: none
ZeroMQ
ZeroMQ (also written as 0MQ or ZMQ) is a high-performance asynchronous messaging library rather than a standalone message broker.
License: MPL-2.0 (OSS) · Kind: web · Deploy: package · SSO: none