mq

OSS

by-gemini
RabbitMQ
Apache RocketMQ
ZeroMQ ($\text{ØMQ}$)

Architectural Model

Brokered (Central Server)

Brokered (NameServer + Broker Cluster)

Brokerless (Networking Library)

Primary Use Case

General purpose messaging, Complex Routing, Task Queues (e.g., Celery)

High-volume, High-reliability, Transactional Messaging, E-commerce, Financial Systems.

High-speed/Low-latency messaging, Building custom, light-weight P2P communication.

Messaging Paradigm

Queue-based (Exchanges route to Queues)

Partitioned Queue-based (Topics)

Socket-based patterns (e.g., PUB/SUB, REQ/REP)

Message Persistence

Strong (Configurable to disk for durability)

Strong (Financial-grade reliability)

None by default (Messages are lost if no receiver is connected).

Throughput & Latency

Moderate Throughput, Very Low Latency

High Throughput, Low Latency (Optimized for scale)

Extremely High Throughput and Lowest Latency (due to brokerless design)

Scalability

Moderate (Clustering/Mirroring can add complexity/overhead)

High (Separate NameServer and Broker for easy horizontal scaling)

Excellent (Scales N-to-N by adding endpoints, though developer must manage topology)

Message Routing

Most Flexible (Uses Exchanges: Direct, Topic, Fanout, etc.)

Flexible (Topic and Tag-based routing)

Simple (Pattern-based: must be coded by application developer)

Complexity

Easier to set up and manage for standard use cases.

Moderate to High (More complex architecture with NameServer).

High (Requires developers to manage connection logic, fault-tolerance, and message loss).

Implementation

Erlang

Java

C++ (Language bindings for many languages)

  • https://github.com/rabbitmq | when you need a tried-and-true message broker with a focus on flexible routing, message reliability, and standard enterprise messaging patterns.

  • https://github.com/apache/rocketmq | when you need financial-grade reliability, high throughput, and features like transactional messages, especially for large-scale distributed systems.

  • https://github.com/zeromq | when you need the fastest possible message transfer between services and are willing to write the application-level logic for reliability, persistence, and complex routing yourself. It is not a broker, but a library.

IBM

  • client libraries: https://developer.ibm.com/articles/mq-downloads/

  • 9.2.4: https://hub.docker.com/r/ibmcom/mq/

https://github.com/ibm-messaging/mq-container/blob/master/docs/usage.md

docker run \
--env LICENSE=accept \
--env MQ_QMGR_NAME=QM1 \
--publish 1414:1414 \
--publish 9443:9443 \
--detach \
--volume qm1data:/mnt/mqm \
icr.io/ibm-messaging/mq

Last updated

Was this helpful?