Book a consultation

Solace in Manufacturing: The Enterprise Backbone Above Plant MQTT Brokers

Solace Sparkplug B: Compliance, the Eclipse List and State Across a Mesh

Solace Sparkplug B support explained: what Sparkplug 3.0 asks of a broker, the 2023 community test versus the Eclipse list, and state across a mesh.

Vladimir Romanov


Solace Sparkplug support is real but unofficial. Solace states on its IoT page that it supports “open standards like MQTT (including MQTT 5.0) and Sparkplug B”, and a Solace community post from August 2023 reported broker 10.5 passing the Eclipse Sparkplug compliance test. But Solace is not on the Eclipse Sparkplug compatible list as of October 2026, its MQTT documentation does not mention Sparkplug, and retained messages, which Sparkplug depends on, are a Controlled Availability feature. This page explains what Sparkplug asks of a broker, what the 2023 result does and does not prove, and how birth, death and state behave when edge nodes and host applications sit on different brokers of a mesh.

It belongs to Solace in manufacturing in the Solace cluster.

What Sparkplug B adds to MQTT

MQTT moves bytes on topics and says nothing about what they mean. Sparkplug, an Eclipse Foundation specification introduced by Cirrus Link in 2016, adds three things on top: a fixed topic form (spBv1.0/group_id/message_type/edge_node_id/device_id), a Protobuf payload with typed metrics, and session state, meaning birth and death certificates so a host always knows whether its data is live. Our UNS guide covers why plants use it, and the MQTT guide covers Will messages and retained messages, the two MQTT features Sparkplug builds on.

Sparkplug 3.0 is an international standard. Version 3.0 was released on 21 October 2022, and on 7 November 2023 the Eclipse Foundation announced it had been published as ISO/IEC 20237:2023 through the JTC 1 Publicly Available Specification process. Eclipse keeps stewardship. A version 4 is in development but not published.

What “Sparkplug compliant” means for a broker

Section 10 of the Sparkplug 3.0 specification defines two broker levels. A Sparkplug Compliant MQTT Server needs only a subset of MQTT. A Sparkplug Aware MQTT Server adds birth-certificate storage. Here is how Solace’s documented MQTT behaviour, from Using MQTT, lines up:

Sparkplug 3.0 requirementLevelSolace documented behaviour, October 2026
Publish and subscribe at QoS 0CompliantSupported
Publish and subscribe at QoS 1CompliantSupported (QoS 2 is converted to QoS 1, which Sparkplug does not need)
All aspects of Will messages, including retain and QoS 1CompliantSupported, but Will messages are not sent when a session ends because of a broker restart, HA failover or Message VPN shutdown
All aspects of the retain flagCompliantRetained messages are a Controlled Availability feature, implemented through retain caches
Store latest NBIRTH and DBIRTH and serve them on $sparkplug/certificates/...AwareNot documented by Solace; we found no evidence of it

The two qualifications in the middle column are the ones that matter. Sparkplug uses a retained message for host STATE and Will messages for both host and edge-node death. Both are supported in principle, both carry a documented condition.

The 2023 community test versus the Eclipse list

Precision matters here, because “Solace is Sparkplug compliant” and “Solace is not Sparkplug compliant” both circulate, and neither is quite right.

The 2023 community runThe Eclipse compatible list
What it isA Solace Community post by user RonInglesby, 29 August 2023Eclipse’s published list of products whose test results were submitted and accepted
Version testedBroker 10.5Not applicable: Solace is not listed
ResultReported passing the Sparkplug compliance test for a brokerListed brokers include Cirrus Link Chariot, HiveMQ Community and Professional editions (plus the Sparkplug Aware extension), NanoMQ and Integration Objects’ SIOTH brokers
ConditionsThe VM’s memory had to be raised to 8,192 MB to make the MQTT retain changes, plus a max-memory settingEach listing names the version tested
Follow-upIn December 2023, asked about submitting to Eclipse, the poster replied “we are considering posting the results there”No Solace entry as of October 2026

How to read it. The run shows that a correctly configured Solace broker could pass the Sparkplug broker test in 2023. It does not show that the current long-term release (10.26.0, as of October 2026) passes, that the default configuration passes, or that Solace supports it as a product commitment. Solace is also not a member of the Sparkplug Working Group. Our wording: compatible as an MQTT transport, self-tested, not Eclipse-listed. If Sparkplug is central to your plant, run the Eclipse Sparkplug TCK against your exact version and configuration, or put an Eclipse-listed broker at the site (see Solace vs HiveMQ).

Black and white view of dense stainless process piping, valves and instruments on an industrial skid
Every instrument on a skid like this becomes a Sparkplug metric. If its death certificate is lost, a host shows a stale value as live, which is the failure Sparkplug exists to prevent.

State, birth and death across a mesh

Sparkplug was written assuming the edge node and the Primary Host Application talk to the same MQTT server, or that the host is connected to every server in the infrastructure. A mesh can break that assumption.

Sparkplug STATE, birth and death messages when the edge node and Primary Host sit on different brokers A Sparkplug edge node reads PLCs and devices and connects to a plant broker at Site A. A Primary Host Application connects to a central broker. The two brokers are joined by a mesh link. A numbered sequence explains the protocol: the host registers a Will of STATE online false then publishes STATE online true as a retained QoS 1 message; the edge node waits for host online, publishes NBIRTH and DBIRTH not retained, and registers NDEATH as its Will with QoS 1 and bdSeq; data follows as NDATA and DDATA with a seq number from 0 to 255; if host STATE goes offline the edge node stores data locally; and on a broker restart or HA failover Solace sends no Will, so no NDEATH is published. Sparkplug state depends on retained STATE and Will messages reaching the right broker Primary Host Application spBv1.0/STATE/host_id, retained Central Solace broker host connects here Site A plant broker edge node connects here mesh link Sparkplug Edge Node NBIRTH, DBIRTH, NDATA PLCs and devices 1. Host sets Will: STATE online=false. Then publishes online=true, retained 2. Edge node sees host online, publishes NBIRTH and DBIRTH, not retained 3. Its NDEATH is registered as its Will: QoS 1, not retained, with bdSeq 4. NDATA and DDATA follow, each with a seq number from 0 to 255 5. Host STATE offline: edge node stores data locally until it returns 6. Broker restart or HA failover: Solace sends no Will, so no NDEATH Unless the mesh path is tested, keep each edge node and its Primary Host on the same broker.
Steps 1 and 5 depend on a retained STATE message being readable at the broker the edge node uses. Step 6 is a documented Solace behaviour. Both are the reasons to test Sparkplug on a mesh rather than assume it.

How it works on one broker. The Primary Host connects with a Will of STATE online=false, subscribes to its own spBv1.0/STATE/host_id topic, then publishes online=true at QoS 1 with the retain flag set. An edge node configured with that Primary Host waits until it sees the host online, then publishes NBIRTH and DBIRTH (never retained) and carries its NDEATH as its MQTT Will, at QoS 1, not retained, with a bdSeq number that ties the death to the matching birth. Data follows as NDATA and DDATA, each carrying a seq number from 0 to 255 so the host can spot a gap and ask for a rebirth. Cirrus Link’s MQTT Transmission, for example, stores data locally while the Primary Host is offline and publishes it when STATE returns to online.

What changes across a mesh.

  1. Retained STATE must be visible at the edge node’s broker. If the host publishes STATE to the central broker and the edge node subscribes at the plant broker, the edge node only behaves correctly if the retained STATE is readable there. Whether retained messages held in a retain cache are available across a dynamic-routing link is not documented; test it.
  2. Will messages fire at the broker the client was connected to. If the plant broker restarts or fails over, Solace does not send Will messages, so the host never receives NDEATH and may show stale values as live until the edge node reconnects and sends a new NBIRTH. See high availability and disaster recovery for the failover model.
  3. The multi-server rule assumes the host is everywhere. The specification says an edge node should move to the next server where the host’s STATE shows online=true. On a mesh where the host connects to one broker only, that logic needs care.

The pattern we would start from: keep Sparkplug inside the site, with edge nodes and their host application (for example a SCADA MQTT host) on the same plant broker, and send modelled, ISA-95-shaped data up the mesh. The Ignition and HighByte page shows that pattern.

Where it gets hard

  • No listing means no shared evidence. With an Eclipse-listed broker, the test result is public and tied to a version. With Solace, the evidence is one 2023 forum post. Budget time to run the TCK.
  • Retained messages are Controlled Availability. Get the support status for your version in writing.
  • Failover without death certificates. Decide how the host detects stale data after a broker failover, and test it by failing the broker during a shift change on a test system.
  • Not Sparkplug Aware. Tools that read $sparkplug/certificates topics to rebuild state will not find them.
  • Two namespaces. Sparkplug topics identify edge nodes, not lines. The unified namespace page covers mapping them into an enterprise tree.

The protocol-level detail on Solace’s MQTT implementation is on Solace MQTT. If your plants already run Sparkplug and you are deciding where Solace fits above them, that layering decision is part of our IT/OT integration work.

Frequently asked questions

Is Solace Sparkplug B compliant?

Not officially. A Solace community post dated 29 August 2023 reported broker version 10.5 passing the Eclipse Sparkplug compliance test after configuration changes. Solace does not appear on the Eclipse Sparkplug compatible software list as of October 2026, and Solace's MQTT documentation does not mention Sparkplug. Treat it as a self-tested MQTT transport for Sparkplug, and run the test yourself.

What is ISO/IEC 20237:2023?

It is Sparkplug 3.0 published as an international standard. The Eclipse Foundation announced on 7 November 2023 that the specification had gone through the ISO and IEC JTC 1 Publicly Available Specification transposition process. Eclipse keeps stewardship of the specification and plans to submit future revisions the same way.

What does a broker need to support Sparkplug?

Section 10 of the Sparkplug 3.0 specification says a Sparkplug Compliant MQTT Server must support publish and subscribe at QoS 0 and QoS 1, all aspects of Will messages including retain and QoS 1, and all aspects of the retain flag. A Sparkplug Aware server also stores each edge node's latest NBIRTH and DBIRTH and republishes them on $sparkplug/certificates topics.

Are retained messages supported on Solace?

Solace documents MQTT retained messages as a Controlled Availability feature, implemented through retain caches. Sparkplug depends on retained messages for the Host Application STATE message, which edge nodes read to decide whether to publish. Confirm with Solace that the feature is available and supported for your broker version and edition before designing Sparkplug onto it.

Can Ignition use Solace as its Sparkplug broker?

Inductive Automation documents that the MQTT broker in its IIoT architecture can be an Ignition Gateway with MQTT Distributor or a third-party server, and Solace accepts MQTT 3.1.1 and 5.0 clients. So it is technically possible. Whether it behaves correctly for Sparkplug state, Will messages and failover is something to test, since Solace is not on the Eclipse list.

References and further reading

  1. Sparkplug Specification, version 3.0 · Eclipse FoundationSection 10 defines Sparkplug Compliant and Sparkplug Aware MQTT servers.
  2. Sparkplug Compatible Software · Eclipse Foundation
  3. The Eclipse Foundation Announces Sparkplug as an International Standard · Eclipse FoundationISO/IEC 20237:2023, 7 November 2023.
  4. Broker v10.5 SparkplugB 3.0 compliant · Solace CommunityThe 2023 community test report.
  5. Using MQTT · Solace documentationRetained messages, Will messages and QoS behaviour.
  6. Minimizing data loss when using MQTT Store and Forward · Cirrus Link

← Manufacturing

Have a project that needs technical ownership?

Send us the situation. If it is not something we should take on, we will say so.