mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Self-Hostedevaluationupdated 29 Aug 2026

rabbitmq-server review

RabbitMQ is a self-hosted message and streaming broker that lets applications exchange work without requiring both sides to be online at the same moment. It supports queue-based messaging, replicated streams, routing, acknowledgements, and several wire protocols from one server.

+8 / 3dstars / 7d
Verdict

Our RabbitMQ checkout installed 240 Selenium packages in 43 seconds, but that subproject's tests failed after 7 seconds and never reached a summary, so this run does not prove the broker itself healthy. RabbitMQ remains the best default here for teams that need mature work queues, flexible routing, and several messaging protocols under one operational model. Choose NATS for a leaner service, or Kafka and Pulsar when retained event history is the primary product rather than one capability.

We ran it

Lab card: what happened when we ran rabbitmq-serverScreenshot of rabbitmq-server (www.rabbitmq.com)
Install✓ · 43s240 packages · 63 MB
Buildn/ano build script
Tests✗ · 7sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo3558 files~55,565 lines of source · 61.3 MB · 18 CI workflows · Dockerfile · tests dir

Answers from our run

Does rabbitmq-server build from source?

Dependencies installed in 43 seconds (240 packages), and the project has no separate build step. We cloned commit 67c1bfa into a clean Debian container with 3 CPUs and no project-specific setup.

Do rabbitmq-server's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does rabbitmq-server have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use rabbitmq-server?

Teams looking for an embedded queue with no server operations: RabbitMQ is a stateful network broker with storage, memory, monitoring, security, and upgrade decisions.

What are the alternatives to rabbitmq-server?

NATS Server, Apache Kafka, Apache Pulsar. Our RabbitMQ checkout installed 240 Selenium packages in 43 seconds, but that subproject's tests failed after 7 seconds and never reached a summary, so this run does not prove the broker itself healthy.

Setup3/5Packages are easy; secure stateful operation needs planning
Docs5/5Detailed guides cover protocols, clusters, upgrades, and operations
Community5/513,822 stars and active August 2026 issue and pull request work
Maturity5/5Long-lived broker with current maintenance releases and tooling

Discussed on

  1. hnRabbitMQ 4.0248 points
  2. hnRabbitmq 3.8.0 Released6 points

Who it’s for

Application teams that need dependable work queues, routing, retries, and acknowledgements between services.
Operators who want AMQP, MQTT, STOMP, streams, and WebSocket variants in one broker.
Organizations prepared to monitor an Erlang-based stateful service and plan upgrades, storage, memory, and cluster recovery.
Kubernetes users who prefer RabbitMQ's supported Cluster Operator over assembling their own StatefulSet.

Who it’s NOT for

Teams looking for an embedded queue with no server operations: RabbitMQ is a stateful network broker with storage, memory, monitoring, security, and upgrade decisions.
Operators planning to stretch one cluster across unreliable wide-area links: RabbitMQ's clustering guide recommends federation or shovel instead of clustering over WAN links.
Contributors expecting a quick full source test cycle: the repository says core server suites take 30 to 40 minutes on a recent multi-core machine, before management UI and integration scenarios.
Buyers whose main job is a long-lived event log with very large replay workloads: compare Kafka or Pulsar directly before adopting RabbitMQ streams as a substitute.
Teams that need the supplied checkout to pass its Selenium command in a plain Node container: our run failed during Mocha module loading and produced no test summary.

Setup reality

Our run installed the ./selenium Node subproject in 43 seconds: 240 packages and 63 MB on disk. There was no build script, so build was skipped. Tests failed with exit 1 after 7 seconds; the supplied log tail contains Node and Mocha module-loading frames but no root error or test summary. Npm audit found 0 known vulnerabilities.

That run did not build or start the RabbitMQ broker. A real server setup needs a supported Erlang release, persistent storage, users and permissions, networking, and a package, container, or Kubernetes deployment. The Selenium harness also expects an environment file plus RabbitMQ, browser, Docker, and scenario services such as Keycloak or LDAP.

The checkout had 3,558 files, about 55,565 source lines, and occupied 61.3 MB. It included 18 CI workflows, a Dockerfile, and a tests directory. RabbitMQ 4.3.5 requires Erlang 27.0 or newer, and production still calls for resource alarms, monitoring, backups, TLS, and a rehearsed upgrade path.

RabbitMQ earns its place when routing matters as much as storage

RabbitMQ accepts messages from producers and delivers them to consumers through exchanges, queues, bindings, and streams. That vocabulary gives application teams more routing control than a basic pub-sub server: direct, topic, fanout, and header-based patterns can live at the broker instead of being repeated in every service. The server supports AMQP 1.0, AMQP 0-9-1, RabbitMQ Stream Protocol, MQTT 3.1 through 5.0, and STOMP 1.0 through 1.2, including several WebSocket transports.

The repository shows the cost of that range. Our commit 67c1bfa checkout contained 3,558 files and about 55,565 lines of source, occupying 61.3 MB before the Selenium dependencies were installed. It includes the core server and tier-one plugins for management, federation, shovel, MQTT, STOMP, streams, OAuth, LDAP, Prometheus, and several discovery systems. Teams can run one product for many messaging jobs, but upgrades and incident reviews must account for the plugins actually enabled.

Version 4.3.5 is active and requires Erlang 27

RabbitMQ is maintained like infrastructure rather than a weekend repository. GitHub recorded a push on August 29, 2026, and release 4.3.5 had shipped on August 17. That maintenance release fixes quorum recovery, mixed-version queries, AMQP frame handling, MQTT parsing, shovel failures, and management behavior. The issue tracker had 202 open issues and 64 open pull requests when fetched. Those counts show current work and reporting volume; they do not mean the broker has 266 confirmed bugs.

Release discipline also creates an upgrade obligation. Version 4.3.5 requires Erlang 27.0 or newer, and its notes say older runtimes will not start. The same release warns operators to enable encrypted management credentials only after every node in a rolling upgrade understands them. Our lab did not attempt that path. It used a 3-CPU, 8 GB unprivileged container and measured only commit 67c1bfa's Node-based Selenium project, so none of these release fixes received runtime verification from us.

What happened when we ran it

Our sandbox entered ./selenium, installed 240 npm packages in 43 seconds, and used 63 MB for them. Npm audit reported 0 known vulnerabilities across all severity levels. The package defines no build script, so the harness skipped that step. These are useful facts about the management and authentication browser-test tooling, not about installing Erlang packages or starting a message broker.

The test command failed with exit code 1 after 7 seconds. Its final lines show Node's CommonJS and ESM loaders passing control into Mocha's file loader and command runner. The supplied log has no summary lines and does not include the originating exception, so it does not establish whether a module, environment value, browser, or service caused the failure. We can say only that the Selenium suite did not start cleanly enough to report tests in this fresh container.

The production checklist is longer than the quick install

Official packages, container images, and a Kubernetes operator spare most users from compiling the repository. A useful deployment still needs persistent volumes, stable node identity, users and permissions, TLS choices, memory and disk alarm thresholds, metrics, and backups of definitions and data where applicable. Quorum queues add replication for workloads that need it, while streams retain an append-only log for replaying consumers. The right queue type depends on failure tolerance and consumption pattern, so the default should be chosen deliberately.

Source contributors face a different setup. RabbitMQ's guide says the core server suites alone can take 30 to 40 minutes on a recent multi-core machine and describes separate targets for quorum queues, queue parallelism, and log management. Selenium adds Docker, a browser, generated environment files, and optional services such as Keycloak, UAA, LDAP, proxies, and extra broker nodes. The 18 CI workflow files in our checkout make that breadth visible, even though our short Node run did not reproduce the CI environment.

One local cluster should not cross a wide-area link

RabbitMQ clusters coordinate broker state closely. The clustering guide expects LAN-like links and directs distant sites toward federation or shovel, which tolerate intermittent connections and independent clusters. That is a meaningful design boundary for multi-region systems. Treating three distant nodes as one cluster may look simpler on a diagram, but it puts latency and partitions into the mechanism that keeps broker members coordinated. Regional clusters with explicit message movement are easier to reason about during an outage.

The choice against Kafka, Pulsar, or NATS should begin with workload shape. RabbitMQ is persuasive when per-message routing, acknowledgements, work queues, and mixed protocols are central. Kafka is built around a retained partitioned log, Pulsar separates serving and storage, and NATS offers a smaller messaging core with optional persistence. Our failed 7-second Selenium run is a reason to recheck the exact source commit before contributing. It is not a reason to dismiss a broker with a current 4.3.5 maintenance line and active issue work.

Alternatives

ProjectWhat it isPick it when
NATS Server gh↗A compact messaging server with core pub-sub and JetStream persistence.pick this instead when a smaller operational footprint and simple request-reply or pub-sub matter more than RabbitMQ's routing and protocol range.
Apache Kafka gh↗A distributed event-log platform built around retained, replayable records.pick this instead when durable event history, partitioned replay, and stream-processing ecosystems are the center of the design.
Apache PulsarA distributed messaging and streaming system that separates brokers from storage.pick this instead when multi-tenancy and a storage-separated architecture justify a larger platform.

What people are saying

  1. [github-trending] rabbitmq/rabbitmq-server

Sources

  1. RabbitMQ Server README
  2. RabbitMQ 4.3.5 release notes
  3. RabbitMQ Selenium test documentation
  4. RabbitMQ production checklist
  5. RabbitMQ clustering guide

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →