Hi Guy,
there are several MQTT brokers like Mosquitto, RabbitMQ and HiveMQ which
are suited for production use, the choice usually depends on what you
are trying to achieve and which kind of professional service you are
looking for.
Mosquitto is open source and is written in C. It fully supports MQTT 3.1
and MQTT 3.1.1. Its binary is very small and mosquitto also works well
on constrained devices. For cloud deployments with tens of thousands of
concurrent connections, the single-threaded nature could become a
challenge, so you should do some test deployments first. Roger Light,
who is also on this mailing list, is the developer and I'm sure he can
tell you a bit more about how people are using mosquitto in production.
Mosquitto is a great product and very stable. As far as I know there is
no company who offers professional support for mosquitto.
RabbitMQ is a nice piece of software which supports multiple protocols
out-of-the-box. Its MQTT support is implemented as adapter [1] which
translates to AMQP and does not implement all MQTT core features. It's
highly scalable and reliable and there are many deployments using AMQP.
It's written Erlang and should be pretty easy to install on most
systems. I'd also be very interested in information about the stability
of the MQTT adapter in production (maybe the RabbitMQ devs can help out
here?).
HiveMQ [2] is a pure MQTT broker which was designed for professional
use. It implements all MQTT 3.1 and MQTT 3.1.1 features and many
additional features on top. It has a plugin system which allows to
integrate seamlessly with other parts of the software landscape (like
databases, microservices, cloud services,...). It also has native
websockets support, implements MQTT bridges and supports TLS for secure
communication. HiveMQ supports elastic clustering (with different
discovery mechanisms) with master-master replication and is highly
scalable due to the event-driven and reactive nature. Professional
support is available.
A comparison of MQTT brokers can be found here [3] on the MQTT Github
Wiki (you can scroll the table to the right to see more features)
Disclaimer: I'm one of the developers of HiveMQ, so take these words
with a grain of salt.
[1]
http://www.rabbitmq.com/mqtt.html
[2]
http://www.hivemq.com
[3]
https://github.com/mqtt/mqtt.github.io/wiki/Server%20support
Guy Dillen wrote: