EMQX vs HiveMQ: Edge, Sparkplug, Clusters and Data Out Compared
In short: EMQX vs HiveMQ compares two MQTT platforms that each offer a clustered broker, edge software and Sparkplug support for plant data. EMQ calls EMQX a large-scale distributed MQTT messaging platform, with EMQX Neuron and EMQX Edge for the plant floor; HiveMQ calls its broker an enterprise-grade MQTT backbone for industrial data streaming, with HiveMQ Edge beside the machines.
- Both list MQTT 3.1.1 and 5.0, clustering, retained messages and Sparkplug support on their own pages.
- The broker carries state and counts. For OEE, the plant still adds planned time, a target rate per product and the reason a person gives for the stop.
- A lost QoS 0 stop message can leave OEE unchanged while it moves minutes from availability to performance.
A controls engineer planning a UNS for three plants soon has to pick the broker in the middle, and EMQX and HiveMQ both make the list. The differences sit in the edge products, Sparkplug handling, many-site design and the hand-off to other systems. Fabrico makes OEE software with a light MES, an application that would sit on top of such a broker, and sells neither product. Vendor facts come from emqx.com, docs.emqx.com, hivemq.com and docs.hivemq.com checked on 13.11.2026, with a link at each fact.
Key takeaways
- EMQ and HiveMQ both document a clustered broker, software for the plant edge, Sparkplug handling and routes into Kafka and databases; they package the edge and the data hand-off differently.
- Route the choice by the job due first: reading PLCs, riding out a plant's WAN gaps, serving Sparkplug devices, or feeding a data platform.
- Test QoS, Will Messages, session expiry and edge buffering on purpose before any OEE figure depends on the broker.
- In the sample tray sealer shift, one lost stop message moved EUR 216 of loss from waiting for film to line speed, at a sample margin.
- The broker moves state and counts; the OEE application subscribed to it adds shift plans, target rates and the reasons operators log at the line.
EMQX vs HiveMQ at a glance
Sources for the cells are linked in place, read on 13.11.2026.
What EMQX offers, per EMQ
The EMQX homepage talks of streaming real-time device data to cloud, AI and analytics. As of 13.11.2026:
- The broker. The EMQX documentation describes a large-scale distributed MQTT messaging platform. The EMQX product page lists MQTT 5.0, MQTT 3.1.1, WebSocket and QUIC, and deployment in your own data center or your AWS, Azure or Google Cloud environment.
- Plant floor. EMQX Neuron is presented as a modern industrial connectivity server with 70+ protocols and drivers, Modbus, OPC UA and Siemens S7 among them, publishing through MQTT and Sparkplug B on x86 or ARM hardware. EMQX Edge is a lightweight MQTT data backbone for the industrial edge, per its page, for Linux, Windows and Docker.
- UNS. EMQ's unified namespace solution page says a UNS organizes industrial data around a shared naming structure and agreed data models, with EMQX as the messaging hub for clustering, access controls, rules and data integration.
What HiveMQ offers, per HiveMQ
From HiveMQ's own pages, as of 13.11.2026:
- HiveMQ Broker. The HiveMQ Broker page lists MQTT 3.1.1 and 5.0 with full support, and says broker nodes can be added or removed without downtime. For hosting it names HiveMQ Cloud, described as fully managed, and self-managed deployment on private, hybrid and public cloud.
- Feature list. The HiveMQ user guide lists retained messages and clean and persistent sessions among supported MQTT features, and calls the broker 100% Sparkplug compatible.
- HiveMQ Edge. The HiveMQ Edge page presents a gateway whose pre-built protocol adapters turn device protocols into MQTT messages, with an offline buffer that keeps messages on disk until the link is back and a two-way bridge to enterprise brokers.
EMQX vs HiveMQ, job by job
Per MQTT.org, MQTT is an OASIS standard for IoT messaging, so the comparison is about what each vendor builds around the broker.
The broker at the centre of a UNS
Topic design stays with the plant team either way: the broker holds whatever tree the sites agree on, for example site, area, line and machine (see our guide to the ISA-95 levels and the unified namespace guide). Retained messages matter because a new subscriber should see the current state of a line at once. The MQTT 5.0 specification says that when a client publishes with the RETAIN flag set to 1, the server must replace any existing retained message for that topic and store the new one for future subscribers. EMQX's retained message docs say EMQX implements that feature, and HiveMQ's user guide lists it.
Edge options next to the machines
EMQ splits the edge in two: EMQX Neuron reads the controllers, and EMQX Edge runs a local broker whose bridge caching, per its page, stores configured upstream messages and retransmits them when connectivity returns. HiveMQ puts protocol conversion, the offline buffer and the bridge into HiveMQ Edge. See our guide to edge or cloud processing for shop floor data.
Sparkplug support
Sparkplug adds state awareness on top of MQTT; the Eclipse Sparkplug project says birth and death certificates give subscribing clients confidence in data validity. HiveMQ's Sparkplug page calls HiveMQ a fully Sparkplug compatible broker as defined by the latest Sparkplug 3.0 specification. The EMQX Sparkplug B docs describe built-in spb_encode and spb_decode functions and a Schema Registry, so rules can read and write Sparkplug B payloads, while EMQX Neuron publishes Sparkplug B from the edge.
Clustering for many sites
The EMQX clustering docs describe nodes working together as one system: core nodes handle writes and full data replication, replicant nodes handle client sessions, and the system keeps operating if one or more nodes go offline. HiveMQ's cluster guide describes a distributed masterless cluster with no single point of failure. With many plants, the links into the cluster need as much care: the EMQX product page speaks of connecting deployments across sites, regions and clouds through one MQTT infrastructure, and HiveMQ offers a broker bridge extension plus the bridge in HiveMQ Edge.
Data integration to other systems
Per the EMQX data integration docs, Sink and Source components connect EMQX with external systems: sinks send messages to targets such as Kafka, PostgreSQL, InfluxDB, TimescaleDB, MongoDB and Snowflake, while sources bring messages in from systems such as MQTT, Kafka or GCP PubSub, and SQL rules filter and transform messages on the way. HiveMQ's extensions catalogue covers moving data both ways with Kafka and Amazon Kinesis, writing it into PostgreSQL, MongoDB or Snowflake, and bridging brokers; its broker page adds a custom SDK for tailored extensions.

Text version of this infographic
- EMQX vs HiveMQ, job by job: two MQTT platforms for a factory UNS, what each does.
- Vendor's own label. EMQX: Large-scale distributed MQTT messaging platform. HiveMQ: MQTT backbone for industrial data streaming.
- UNS broker. EMQX: MQTT 5.0, 3.1.1, WebSocket and QUIC. HiveMQ: Full MQTT 3.1.1 and 5.0 support.
- At the edge. EMQX: EMQX Neuron: 70+ drivers; EMQX Edge: local broker. HiveMQ: HiveMQ Edge: protocol adapters, offline buffer.
- Sparkplug. EMQX: Sparkplug B encode and decode in rules. HiveMQ: Sparkplug compatible broker, Sparkplug 3.0.
- Clusters, many sites. EMQX: Core and replicant nodes; edge bridge caching. HiveMQ: Masterless cluster; bridge between brokers.
- Data out. EMQX: SQL rule engine, sinks and sources. HiveMQ: Extensions: Kafka, PostgreSQL, Snowflake.
- Where OEE joins. The broker carries state and counts. Shift plan, target rate and operator reason come from the OEE layer that subscribes to the broker.
- Facts from emqx.com, docs.emqx.com, hivemq.com and docs.hivemq.com, checked 13.11.2026. Fabrico makes OEE software, not MQTT brokers.
Match the first job
Start from the task the project must finish first.
| Opening task | Look first at |
|---|---|
| Reading PLCs over Modbus, OPC UA or S7 and publishing MQTT | EMQX Neuron and HiveMQ Edge, side by side |
| A plant broker that keeps data when the WAN link drops | EMQX Edge bridge caching and the HiveMQ Edge offline buffer |
| Sparkplug B devices and a Sparkplug host application | EMQX Sparkplug functions and HiveMQ's Sparkplug compatible broker |
| One central cluster serving many plants | EMQX core and replicant nodes, HiveMQ masterless cluster |
| Streaming broker data into Kafka or a database | EMQX sinks and HiveMQ extensions |
| Shift OEE with the reasons operators give | An OEE application that subscribes to the broker |
If HighByte is on the list too, our HighByte vs HiveMQ comparison looks at a modelling hub next to a broker, and OPC UA vs MQTT covers the protocol choice underneath.
Decision matrix: EMQX or HiveMQ for your plant
Read down the first column. Each row points to the vendor pages that document the job; where both do, the pilot decides, not the brochure.
| If this is you | Look first at | Why (vendor page) | Prove it in the pilot by |
|---|---|---|---|
| PLCs must be read at the machine and published as MQTT | Both edge products | EMQX Neuron: 70+ protocols and drivers; HiveMQ Edge: OPC UA, Modbus, Siemens, Beckhoff, BACnet, EtherNet/IP, MTConnect adapters | Connecting your three most common controller models |
| A plant's WAN link drops during shifts | Both edge products | EMQX Edge bridge caching; HiveMQ Edge stores messages on disk | Pulling the WAN cable for 30 minutes and counting what arrives |
| Sparkplug devices are already on the floor | Both | EMQX Sparkplug B functions; HiveMQ Sparkplug 3.0 page | Running your own host application against each broker |
| Engineers want to filter and reshape messages inside the broker with SQL | EMQX | SQL rules on incoming messages | Writing one rule that tags every count with its line |
| Your developers plan their own broker add-on | HiveMQ | Custom SDK for tailored extensions | Building one small extension against a test broker |
| Counts must stream into Kafka or a database | Both | EMQX sinks and sources; HiveMQ extensions catalogue | Landing one shift of counts in a test table |
| One subscribing app must scale over several instances | Both | EMQX shared subscription; HiveMQ shared subscriptions | Stopping one instance and checking the shift total still matches |
| The ops team wants a web console for clients and clusters | Both | EMQX Dashboard; HiveMQ Control Center | Finding last shift's worst gateway in under ten minutes |
| A broker node may fail mid-shift | Both clusters | EMQX core and replicant nodes; HiveMQ masterless cluster | Stopping one node and watching the gateways reconnect |
| OEE with the reasons operators give | An OEE or light MES app on the broker | EMQ: a UNS rests on agreed data models | Matching one shift's stops to the reasons logged at the line |
Broker failure modes to test before OEE depends on them
A broker pilot that only shows messages flowing proves little. Break these on purpose on a test line and note what the OEE screen did.
| Fault | What OEE shows | Setting or feature to test |
|---|---|---|
| State sent at QoS 0 while the link drops | Stop minutes turn into slow running | QoS 1 or 2 on state topics (worked example below) |
| A gateway vanishes without a word | The last retained state stays RUNNING | A Will Message that publishes an unknown state (MQTT 5.0) |
| The OEE app reconnects after a restart | Messages from the gap never arrive | A session expiry longer than a restart takes |
| A plant loses its WAN link for an hour | A gap in central data | EMQX Edge bridge caching; HiveMQ Edge disk buffer; EMQX bridge fallback actions |
| One subscriber falls behind | Shift totals close late | Shared subscriptions (EMQX, HiveMQ) |
Two lines of the MQTT 5.0 specification decide most of this table (accessed 14.11.2026). On session expiry: "If it is set to 0, or is absent, the Session ends when the Network Connection is closed." So an OEE subscriber that restarts with that setting starts a fresh session and gets nothing queued for the gap. On the Will Message: it "MUST be published after the Network Connection is subsequently closed", once the Will Delay Interval has passed or the session has ended. A gateway that sets a Will on its state topic tells every subscriber its line is now unknown, instead of leaving RUNNING in place.
Security belongs in the same pilot. NIST's SP 800-82 Rev. 3, Guide to Operational Technology (OT) Security (September 2023) covers typical OT topologies, threats and countermeasures, and ISA describes its ISA/IEC 62443 standards as setting out requirements and processes for implementing and maintaining secure automation and control systems (both accessed 14.11.2026). Decide which zone the central cluster and each edge broker sit in before the first gateway publishes.
Where OEE inputs meet the topic tree
A topic such as site2/meals/line3/traysealer/state can say RUNNING or STOPPED, and a count topic can tick up with output. OEE also needs planned production time from the shift pattern, a target rate for the product, the reject count, and the reason the line stopped, which a person at the line usually supplies.
| OEE input | Where it usually comes from | Carried by the broker? |
|---|---|---|
| Run or stop state | PLC value published by an edge gateway | Yes, as a topic |
| Output and reject counts | Counter, sensor or the line's reject signal | Yes, if a counter or PLC sends them |
| Planned production time | Shift pattern, breaks, planned cleans | If a planning or OEE app publishes it |
| Target rate for the product | Rated speed set by engineering | If an application publishes it |
| Stop cause | Operator choice from an agreed list | After someone records it |
QoS per topic matters here. The MQTT 5.0 specification says a QoS 0 message arrives at the receiver either once or not at all, with no response and no retry. On a state topic that drives availability, that has a cost.
Worked example: a lost QoS 0 stop message on a tray sealer
Every figure below is invented for a made-up ready-meals line: sample data, not tied to any customer or taken from a product screen. A tray sealer runs a 480 minute shift with 30 planned minutes for a break plus a hygiene clean, so planned production time is 450 minutes. At a rated 40 trays a minute the line could make at most 450 x 40 = 18,000 trays. An edge gateway publishes the sealer's state as a retained message, plus a running count.
At 13:40 the tray sealer stops for 18 minutes, waiting for lidding film. The state topic is set to QoS 0, and the STOPPED message is lost while the gateway's link drops and reconnects. When the tray sealer starts again, the reconnected gateway publishes RUNNING, which the OEE application already believes. A retained message holds the latest value, not the history, so the gap stays hidden.
| Sample shift | As logged | Reconciled |
|---|---|---|
| Stopped minutes | 36 | 54 |
| Run time | 450 minus 36 = 414 min | 450 minus 54 = 396 min |
| Availability | 414 / 450 = 92.0% | 396 / 450 = 88.0% |
| Ideal output in run time | 414 x 40 = 16,560 | 396 x 40 = 15,840 |
| Performance | 14,850 / 16,560 = 89.7% | 14,850 / 15,840 = 93.8% |
| Quality | 14,630 / 14,850 = 98.5% | 14,630 / 14,850 = 98.5% |
| OEE | 81.3% | 81.3% |
The arithmetic. The count topic shows 14,850 trays and the reject signal 220, so 14,630 are good. As logged: 92.0% x 89.7% x 98.5% = 81.3%. Reconciled: 88.0% x 93.8% x 98.5% = 81.3%. Both equal 14,630 good of 18,000 possible (how OEE is calculated).
OEE holds because good output and planned time did not change; the visible loss does. As logged, the shift looks like a speed problem. Reconciled, it shows 18 more stopped minutes, waiting for lidding film, a cause that belongs to purchasing and the stores. The other 36 minutes were changeover 14, seal-head fault 13 and waiting for product 9.
The clue: the count topic stays flat for 18 minutes while the state says RUNNING, so a rule in the OEE layer or a supervisor can spot the gap and the operator adds the cause. State at QoS 1 or 2 plus edge buffering lowers the risk.
Carried to money. Take a sample contribution margin of EUR 0.30 a tray, made up for this page; ask finance for yours. The shift made 14,630 good trays of 18,000 possible, so 3,370 trays, or EUR 1,011, were lost. Reconciled, that splits into stops 54 x 40 = 2,160 trays (EUR 648), slow running 15,840 minus 14,850 = 990 trays (EUR 297) and 220 rejects (EUR 66). As logged, stops showed only 1,440 trays (EUR 432) and speed 1,710 trays (EUR 513). The EUR 1,011 total is right in both views; EUR 216 of it, the 720 trays the film wait cost, sits under the wrong owner.
On a three-shift plant with 20 production days, 60 shifts a month, a loss of this size is EUR 60,660 a month and EUR 727,920 over 720 shifts a year. If the lost stop message recurs on one shift in ten, 6 a month, the misfiled part is EUR 1,296 a month and EUR 15,552 a year: money spent chasing line speed while the film supply goes unfixed.
Where Fabrico fits for a UNS buyer
Fabrico is none of the products above: no broker, no edge gateway, no SCADA, HMI or DataOps tool. Beside a UNS it plays the OEE and light MES part, joining the machine signal with the shift plan, target rates and the reasons operators give.
- Signals. Machine stops and counts arrive as PLC tags, sensor pulses or counter values. MQTT is named among supported protocols, beside OPC UA and Modbus, on our machine connectivity page; the route for a machine is settled when the project starts.
- Stop reasons. At the line, an operator picks the stop reason from a phone or tablet. Fabrico then reports OEE and downtime for every line and shift, puts a money figure on the lost time, and runs on the web, iOS and Android (see the solution overview).
- Manual stations. Where a station is manual or a machine has no signal to read, the camera add-on counts output only. Stop reasons proposed by the camera are on the Roadmap. Its video is streamed on request and never stored. The camera add-on page has the details, and computer vision for FMCG manufacturing shows where it fits on packing lines.
- Data. A data team can pull results through the REST API, take webhooks, or export Excel or CSV files, and put stop reasons beside the broker data.
To watch shift plans and operator reasons join a broker-based stack, book a demo.
What to ask EMQ and HiveMQ
- Which of our controller models does your edge software read, and through which driver or adapter?
- Which QoS and retain settings do you recommend for state and count topics, and why?
- When a plant loses its link to the central cluster, where are messages buffered, and how much can be held?
- Which Sparkplug version have you tested, and with which host application?
- How are many plant brokers bridged to one cluster, and how are topic permissions kept consistent?
- How do you push one configuration change to many plants, and undo it?
The OEE software guide covers what sits above the broker.
What to do this week
Five steps for a controls, CI or operations manager with both vendors on the list:
- Write down the QoS, retain and session settings each existing gateway uses for state and count topics. Anything at QoS 0 on a state topic goes on the risk list.
- Check one shift for silent gaps. Look for spells where the count topic stays flat while state reads RUNNING, and ask the line what happened.
- Pick the matrix rows that apply and send the same list, with the questions above, to EMQ and HiveMQ.
- Plan the break tests. WAN cable out for 30 minutes, one broker node stopped, the OEE subscriber restarted. Agree what pass means before the pilot.
- Price the gap. Get a per-tray margin from finance and repeat the money step above with last month's stop log.
What people ask next
How do EMQX and HiveMQ differ?
Both are MQTT platforms built around a clustered broker. EMQX surrounds it with EMQX Neuron for industrial connectivity, EMQX Edge as an edge broker and a SQL rule engine. HiveMQ surrounds it with HiveMQ Edge as a gateway and extensions for Kafka, databases and cloud services.
Do EMQX and HiveMQ support Sparkplug B?
Both say so on their own pages. HiveMQ calls its broker fully Sparkplug compatible as defined by the Sparkplug 3.0 specification. EMQX documents built-in functions that encode and decode Sparkplug B payloads in rules, and EMQX Neuron can publish data as Sparkplug B. Ask each vendor which host application they have tested with.
Can a lost MQTT message change OEE?
It can change how the figure splits. In the sample shift on this page, a lost QoS 0 stop message makes 18 stopped minutes look like slow running: availability reads 92.0% instead of 88.0% and performance 89.7% instead of 93.8%, while OEE stays at 81.3%.
Does EMQX or HiveMQ calculate OEE?
Both carry the state and count messages that OEE is built from. The shift plan, target rates and operator stop reasons usually sit in an OEE, light MES or MES application that subscribes to the broker, so agree early which system owns them.
Does Fabrico replace EMQX or HiveMQ?
No. Fabrico is the OEE and light MES application a broker would feed, not a broker or a gateway. It takes machine stops and counts from PLC tags, sensors or counters, keeps the reason the operator picks, and passes data on by REST API, webhooks or file export to Excel or CSV.
Want a stop cause from the line to sit next to your broker data? Book a demo.
Related articles
Latest from our blog

Real Fabrico tiles, sample data.











