Pulsar vs.
RabbitMQ vs.
NATS JetStream

Apache Pulsar is a cloud-native open-source messaging and streaming platform for scalable and reliable applications. Pulsar has multi-layer architecture, multi-tenancy, and geo-replication across regions.

RabbitMQ is an open-source messaging platform for asynchronous communication using the pub-sub model, suitable for simple non-critical applications.

NATS JetStream is a lightweight, high-performance open-source messaging platform for cloud-native microservices, with a single-server architecture.

See full report

Pulsar vs. RabbitMQ vs. NATS Performance

In our 2023 test comparing the performance of Pulsar, RabbitMQ, and NATS JetStreams, we found:

Throughput

Pulsar showed a higher peak consumer throughput of 2.6M msg/s compared to RabbitMQ’s 48K msg/s and NATS JetStream’s 160K msg/s.
Pulsar was able to support a producer rate of 1M msg/s — 33x faster than RabbitMQ and 20x faster than NATS JetStream.
Pulsar outperformed RabbitMQ during the backlog drain with a stable publish rate of 100K msg/s, while RabbitMQ's publish rate dropped by more than 50%

2,600,000
msg/s
Pulsar
160,000
msg/s
NATS JetStreams
48,000
msg/s
RabbitMQ
Latency

Pulsar's p99 latency is 300x better than RabbitMQ and 40x better than NATS JetStream at a topic count of 50.

Topics
1
10
100
Pulsar
p99 latency
6.9
14.0
93.2
RabbitMQ
p99 latency
344
3,734
13,740
NATS JetStream
p99 latency
22.1
74.7
866.3
Scalability

Pulsar demonstrated better scalability, handling increasing loads and numbers of topics more effectively than NATS JetStream and RabbitMQ.

RabbitMQ can process 20K msg/s, and NATS JetStream can support 30K msg/s for topic counts up to 500, while Pulsar can achieve 1M msg/s up to 50 topics and provided a publish rate above 200K msg/s for up to 20K topics.

Producer throughput
500
Topics
Pulsar
350,000
msg/s
RabbitMQ
20,000
msg/s
NATS JetStream
30,000
msg/s

Key differentiators
of Pulsar

Architecture

Pulsar provides a multi-layer architecture that decouples compute and storage. Pulsar’s design allows organizations to elastically scale compute independently from storage and achieve different levels of resource isolation. Pulsar’s architecture offers key benefits, including:

Simplified operations with multi-tenancy
Elastic scalability
High availability with geo-replication
Cost-effective data retention
Stream data processing
Automatic load balancing
Serverless functions
Supports up to 1M topics
Use cases

Pulsar has the flexibility to serve a wide range of messaging and event streaming use cases in one platform. Users can deploy Pulsar as a centralized messaging platform as well as for batch and event streaming. Pulsar is inherently able to serve a wide range of messaging use cases because it can send and retain. For example, Pulsar can ingest, process, and analyze real-time data streams.

NATS

In comparison, RabbitMQ primarily targets asynchronous pub-sub use cases, with no event streaming support. RabbitMQ can only serve simple message queuing and routing use cases, i.e. send and forget type of messaging use cases. RabbitMQ is good for long-running tasks, running background jobs, and request-response between and within applications.
NATS is good for simple pub/sub and queue-based messaging patterns like IoT applications where each device has limited resources and connectivity.

Pulsar vs. RabbitMQ vs. NATS JetStream features comparison

NATS JetStream
RabbitMQ
Managing PULSAR
Key features
Stream workloads with ordered consumption
Message replay
Message retention (time-based)
Message retention (acknowledge-based)
Message retention (subscription-based)
Built-in tiered storage
Processing capabilities
Pulsar Functions
Queuing semantics (round robin)
Queuing semantics (key shared)
Queuing semantics (dead letter)
Delivery guarantees (at most once)
Delivery guarantee (at least once)
Delivery guarantee (exactly once)
Scheduled and delayed delivery
Topic or Log compaction
Performance and scalability
Horizontally scalable
High availability (write)
Can only tolerate one node failure
Can only tolerate one node failure
Can tolerate many node failures
Rebalance-free scaling
Management features
Built-in multitenancy
vhosts
Built-in georeplication
Built-in schema management
End-to-end encryption
Use Cases
Message Routing
Pub/Sub
Queueing
Event Streaming

Want to learn more?

Drop us a line. We'd love to chat.