MQTT Broker Comparison – Open Source Vs. Commercial Vs. Cloud-managed Vs. General Purpose
Published: 2022-08-19 12:17:00


MQTT brokers help implement the publish-subscribe communication model between devices and applications. The MQTT broker also helps implement rules and filters that help make the communications efficient and secure.

## Where MQTT Brokers are Used

The most common use cases for MQTT and MQTT brokers are in IoT applications.
In fact, [MQTT](/mqtt-essentials/) is the de facto standard for IoT use cases. It’s deployed in bandwidth and resource-challenged environments where the clients have to be lightweight.

Thanks to the efficient nature of the protocol, MQTT is deployed across a variety of verticals and use cases. For example, it helps car-sharing app [ShareNow](/case-studies/bmw-mobility-services/) to give its users instant access to their cars, it helps [Netflix](/case-studies/netflix/) certify devices that can use its software and it helps [Matternet](/case-studies/matternet/) monitor autonomous drones delivering medical samples.

## Types of MQTT Broker

The MQTT specification lays out the functionality expected from an MQTT-based deployment, and that offers a common definition that communities and businesses can then use for building their applications.

Currently, an MQTT broker is available in the following variants:

| Types of MQTT Brokers                     | Examples                                             |
| ----------------------------------------- | ---------------------------------------------------- |
| Open Source                               | HiveMQ CE, Mosquitto                                 |
| Commercial                                | HiveMQ Professional and Enterprise, EMQ, VerneMQ     |
| Cloud (Managed)                           | HiveMQ Cloud, CloudMQTT, AWS IoT Core, Azure IoT Hub |
| General-purpose brokers with MQTT support | Solace PubSub+, IBM MQ, RabbitMQ, ActiveMQ           |

## Choosing the Best MQTT Broker

An effective way to evaluate software technology is through Architectural Requirements (a.k.a. Non-Functional Requirements). An MQTT broker comparison based on these architectural requirements should give you insight into how to find the best MQTT broker for your needs

Note: This is a category related view and HiveMQ’s Enterprise MQTT Broker is not the focus of this table

<table class="tg">
<thead>
  <tr>
    <th class="tg-0lax" colspan="5"><span style="font-weight:700;font-style:normal;text-decoration:none">Common Challenges by variants</span></th>
  </tr>
</thead>
<tbody>
  <tr>
    <td class="tg-0lax"></td>
    <td class="tg-0lax"><span style="font-weight:700;font-style:normal;text-decoration:none">Open Source</span></td>
    <td class="tg-0lax"><span style="font-weight:700;font-style:normal;text-decoration:none">Commercial</span></td>
    <td class="tg-0lax"><span style="font-weight:700;font-style:normal;text-decoration:none">Cloud-Managed</span></td>
    <td class="tg-0lax"><span style="font-weight:700;font-style:normal;text-decoration:none">General Purpose</span></td>
  </tr>
  <tr>
    <td class="tg-0lax">Scalability</td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Limited scalabilty</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Do not scale to millions of devices and messages</span></td>
    <td class="tg-0lax">Require support tickets to add capacity</td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Unable to scale linearly and require massive step upgrades</span></td>
  </tr>
  <tr>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Security</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Limited options</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Lack support for latest cipher suites for encryption</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Lack flexibility e.g. turning off TLS for private networks to save compute and bandwidth</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Miss advanced security features like plug-ins and chaining of authentication / authorization logic</span></td>
  </tr>
  <tr>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Resilience</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Cannot cluster for higher availability</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Missing plugins for DB integration</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Lack reason codes and other core MQTT features which sacrifices resolution times</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">- Master-Slave architecure create long failover time</span><br>- Miss key features like Retained Messages that hurts recovery times<br></td>
  </tr>
  <tr>
    <td class="tg-0lax">Agility</td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Hard to manage when coded in difficult libraries like Erlang</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Require restarting application when adding nodes</span></td>
    <td class="tg-0lax"></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Poor MQTT compliance makes interwork with systems unpredictable</span></td>
  </tr>
  <tr>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Observability</span></td>
    <td class="tg-0lax"></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Very few meaningful metrics available</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">- can’t query individual endpoints</span><br><br><span style="font-weight:400;font-style:normal;text-decoration:none">- action/hops inside the cloud are a black box</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Force a stack of closed management systems that hamper collaboration between systems</span></td>
  </tr>
  <tr>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Availability</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">No overload protection from overactive publishers</span></td>
    <td class="tg-0lax"><span style="font-weight:400;font-style:normal;text-decoration:none">Persist on memory and not on disk causing data loss in many scenarios</span></td>
    <td class="tg-0lax"></td>
    <td class="tg-0lax"></td>
  </tr>
</tbody>
</table>

These NFRs should form the foundation of an MQTT broker comparison and it will help to have deeper understanding of each of the architectural requirements:

## Scalability

| What to look for                                                                                                                  | Why                                                                                        |
|-----------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------------------------------------ |
| Native support for the publish-subscribe pattern                                                                                  | Efficiency of Fan-in/Fan-out pattern helps avoid spaghetti architecture and its complexity |
| Linear [scalability](/blog/mqtt-broker-scalability-tests/)                                                  | Helps avoid abrupt infrastructure costs when handing incremental growth                    |
| High number of topics and concurrent connections                                                                                  | Helps teams prioritize the business logic over managing lower-level components             |
| Grow and shrink [cluster](/blog/clustering-mqtt-introduction-benefits/) size at runtime without losing data | Keeps availability and uptime commitments, whether scaling up or down                      |


## Resilience

| What to look for                                            | Why                                                                                                             |
| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Fault tolerance at multiple levels (broker, cluster, cloud) | IoT environments are prone to network outages and disruptions                                                   |
| Masterless cluster architecture                             | Master/Slave architecture suffers from long recovery times which hurts application availability and performance |

## Agility

| What to look for                                                 | Why                                                                                                          |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| Variety of deployment options - on-premise, cloud, fully-managed | Helps right-size your deployment for different use cases while operating under the same technical principles |
| Easy Maintainability through standards-based approach            | Ease of development that helps accelerate time to market                                                     |
| Testability                                                      | For quality and performance assurance                                                                        |
| Support for multi-cloud strategy                                 | Helps avoid vendor lock-in and brings in the best features from multiple platforms                           |
| Tested and packaged extensions for common enterprise system      | Complex integration like Apache Kafka etc. can be very time-consuming to build and maintain in-house         |
| Expertise to certify extensions for enterprise use               | During deployment and support issues, a vendor-certified extension is one less problem for the enterprise    |


## Availability

| What to Look for                                     | Why                                                                                                                   |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Cluster Overload Protection                          | Reduces the rate of incoming messages and connection requests from publishing clients that risk overloading a cluster |
| Built-in support for features like Retained Messages | IRL environments, a client needs a new/last state to be productive                                                    |

## Usability

| What to Look for          | Why                                                                                                                                                 |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| REST API                  | For programmatic access to the broker                                                                                                               |
| K8s Operator              | Your DevOps can easily orchestrate, automate, and manage the lifecycle of multiple HiveMQ cluster deployments within Kubernetes (platform agnostic) |
| Wide support of libraries | Helps your developers spend less time learning new coding languages and constructs                                                                  |

**

### > To know what to look out for in regards to Security, Observability, Extensibility, and more, read [MQTT Broker Comparison – Which is the Best for Your IoT Application?](https://www.hivemq.com/blog/mqtt-broker-comparison-iot-application/) 
**
 

## Choosing the Best MQTT Broker

From an architectural perspective, it’s clear that enterprises should choose an MQTT broker that scales without compromising on the security and resilience of the application. The ability to tweak the parameters of the broker and integrate with enterprise systems like Kafka can be very powerful for a business.


While resilience, security, flexibility, and scalability are key, it’s important that the MQTT broker you choose is easy to use and manage - manually and programmatically.

HiveMQ Enterprise MQTT Broker has brought innovative features to mature businesses for their mission-critical applications. HiveMQ has 100% compliance to the MQTT 3.1.1 and 5 standards while offering highly-specialized professional services and 24x7 support to 150+ IoT customers across the globe.

See how [HiveMQ Enterprise MQTT Broker](/hivemq/mqtt-broker/) stacks up against your enterprise criteria for deployment. [Contact us](/contact/) today.