RabbitMQ,Vernemq and HiveMQ - Distribution and HA

2.4k Views Asked by At

I'm trying to pick one up for a project I'm doing.

It's utterly unclear from the documentation how does the HA work in all of them except for RabbitMQ, which states that incoming requests will always find their way to the node that originally created the queue in question. Meaning If I want to publish to QueueA which was created by Node1 but end up making the request at Node2, I will be internally routed to Node2. I on the other hand was looking for a TRUE distributed solution where I would be able to address any node without having my request re-routed internally, and get an answer back from it.

2

There are 2 best solutions below

0
On

Disclaimer: I work for HiveMQ. From the HiveMQ User Guide:

An MQTT broker cluster is a distributed system that represents one logical MQTT broker to connected MQTT clients, meaning that for the MQTT client it makes zero difference whether it is connected to a single HiveMQ broker node or a multi node HiveMQ cluster.

Data sets get replicated between different node and when a node leaves or enters the cluster data gets re-synchronised to ensure the configured replica count is always upheld. HiveMQ provides a masterless, fully elastic cluster with true high availability. No additional software such as Zookeeper is required.

0
On

VerneMQ provides clustering without the use of any additional components like Zookeeper, full syncronisation of the topic tree and subscriptions, self-healing netsplits. VerneMQ routes every message from any cluster node to any other node where subscribes live. VerneMQ can do queue migration in the background for offline queues.

VerneMQ has an eventually consistent synchronisation model. It broadcasts events in the cluster, but also uses anti-entropy to make sure the synchronisation happens.

Contrary to brokers based on Mnesia (Rabbit), VerneMQ has a defined model regarding CAP (consistency, availability).

Contrary to other brokers, VerneMQ offers these features in its fully Open Source version!

Disclaimer: I'm with the VerneMQ project.