Book a consultation

Solace

Solace Protocols and APIs: MQTT, JMS, AMQP, REST and Kafka on One Broker

Solace protocols explained: SMF, MQTT, AMQP, JMS, REST, WebSocket and Kafka on one event broker, how translation works, and the documented limits.

Vladimir Romanov


Solace protocols are the reason many architects shortlist the Solace Event Broker in the first place. One broker accepts Solace’s own SMF protocol plus the open standards MQTT 3.1.1 and 5.0, AMQP 1.0, REST over HTTP and WebSocket, serves JMS and Jakarta Messaging applications through its Java APIs, and connects to Kafka through bridging, a proxy or connectors. Because every message is converted to one internal format and routed by topic, an MQTT publish from a line gateway can reach a JMS application, a REST endpoint and a Kafka topic without a separate integration server in between (Solace component maps; Solace Event Broker).

This page explains how that translation works, which protocol or API suits which application, and the documented limits as of October 2026. It sits in the Solace cluster; the four pages under it go deeper on MQTT, JMS and REST, Kafka and the SDKs.

How Solace protocols work on one broker

Everything becomes SMF inside. SMF, the Solace Message Format, is the broker’s native binary protocol, carried over TCP, TLS or WebSocket. When a client connects over MQTT, AMQP or HTTP, the broker terminates that protocol at the edge of the broker and converts the message to SMF for routing (component maps). A Wireshark dissector for SMF exists in SolaceLabs for anyone who needs to see it on the wire.

Topics are the common currency. Routing does not care which protocol a message arrived on. It cares about the topic string and which subscriptions match it. An MQTT topic like site1/packaging/line3/filler/state is a valid Solace topic, and a queue can subscribe to it so that a JMS consumer receives the same events with guaranteed delivery. The messaging model page explains topics, queues and the exchange patterns.

Payloads pass through; metadata is translated. The body bytes travel unchanged. Headers, user properties, correlation IDs, reply-to addresses and quality-of-service levels are mapped from one protocol’s model to another’s, and the maps are not always one to one. An MQTT 5 user property, a JMS property and an HTTP header are three different things that the broker reconciles as best it can.

One broker, many protocols in and out Six producers on the left connect over different protocols: an edge gateway over MQTT, a Java application over JMS, a webhook client over REST, an AMQP 1.0 client, a browser over SMF on WebSocket, and a Kafka cluster through bridging. All arrows enter one Solace Event Broker in the centre, which converts each message to SMF, routes it by topic and stores guaranteed messages in queues. Six consumers on the right receive the same events over their own protocols: an MES on a JMS queue, analytics on a Kafka topic, a dashboard over WebSocket, an ERP adapter through a REST delivery point, a mobile app over MQTT, and a C service over SMF. Producers Consumers Edge gateway MQTT 3.1.1 or 5.0 Java application JMS or Jakarta Webhook client REST, HTTP POST Open-source client AMQP 1.0 Browser SMF over WebSocket Kafka cluster bridge, proxy, connector Solace Event Broker 1. Convert to SMF 2. Match topic 3. Queue if guaranteed payload unchanged MES JMS consumer on a queue Analytics Kafka topic Dashboard WebSocket ERP adapter REST delivery point Mobile app MQTT C service SMF, Solace C API Any producer can reach any consumer: routing follows the topic. Dashed: Kafka joins through a bridge.
Protocol translation happens once, inside the broker. The topic decides who receives a message; the protocol only decides how each application connects.

The Solace protocols compared

The table summarises what Solace documents for each protocol, what usually connects over it, and the point to check first. Versions are as of October 2026.

ProtocolVersions and transportsTypical clientsBest fitCheck first
SMFSolace native; TCP, TLS, WebSocketSolace APIs in C, Java, .NET, Python, Go, JavaScript, Node.jsFull feature set, lowest latencyIt ties code to Solace’s APIs
MQTT3.1.1 and 5.0; TCP, TLS, WS, WSSEdge gateways, Ignition, devices, Eclipse PahoPlant telemetry, unified namespace feedsQoS 2 becomes QoS 1; retained messages are Controlled Availability
AMQP1.0; TCP, TLSApache Qpid JMS and ProtonPortable enterprise apps, JMS 2.0 style codeNot AMQP 0-9-1 (the RabbitMQ dialect)
JMS / JakartaJMS 1.1 functionality, javax and jakarta namespacesJava EE and Jakarta EE servers, SpringMigrating from TIBCO EMS, IBM MQ JMS, ActiveMQJMS 2.0 features come through Qpid over AMQP, not Solace’s API
RESTHTTP POST in; REST Delivery Points outScripts, SaaS webhooks, appliancesLow-volume integration without a client libraryOne request per message limits throughput
WebSocketSMF or MQTT over WS and WSSBrowsers, mobile webLive dashboards and operator screensFirewall and proxy rules for long-lived connections
KafkaBridging, wireline proxy, connectorsKafka clusters and clientsFeeding analytics, coexisting with KafkaIn-broker bridging is documented for software brokers only

Sources: Using MQTT, component maps, Solace JMS API, REST encoding, Kafka bridging.

Why the breadth matters to a plant. A manufacturer rarely gets to choose one protocol. Line equipment and edge software speak MQTT. The MES vendor ships a JMS adapter. The ERP integration team prefers REST. The data platform team runs Kafka. Without a multi-protocol broker, each pair needs its own bridge, and every bridge is a component someone has to patch, monitor and explain during an outage. Our IT/OT integration work starts by drawing exactly that map.

Open protocols or Solace APIs

The second decision is whether an application connects through an open protocol or through one of Solace’s own messaging APIs, which all speak SMF.

Single yellow network cable with its connector lying on a plain blue surface
Open protocols work like a standard connector: any compliant client plugs in, and the broker can be changed later without rewriting the application.
QuestionOpen protocol (MQTT, AMQP, REST)Solace API (SMF)
Portability to another brokerHigh; clients are vendor-neutralLow; code uses Solace classes
Feature coverageThe protocol’s feature set, with documented deviationsThe full broker feature set
Client librariesMany, maintained by third partiesMaintained by Solace, in about ten languages
Performance tuningDepends on the client librarySolace documents C as lowest CPU, highest throughput
Who supports the clientThe open-source project or its vendorSolace support

Our view. Put devices, packaged products and anything you might move to another broker on open protocols. Use Solace’s APIs where you have chosen Solace for the long term and need what only SMF exposes. Most estates end up mixed, and that is fine, as long as the choice is written down per application rather than left to whichever developer wrote the first prototype.

Choosing a protocol per application

A short procedure that holds up in design reviews:

  1. Start from the client, not the broker. What does the application or device already speak? Changing a packaged MES or a PLC gateway is expensive; changing a broker setting is not.
  2. Decide the delivery guarantee. If losing a message costs money or compliance evidence, the consumer needs a queue with guaranteed messaging, whatever the protocol. See guaranteed messaging.
  3. Check the documented deviations for that protocol (the MQTT and Kafka limits below are the common ones).
  4. Check metadata. List the headers or properties consumers rely on and test their mapping end to end.
  5. Write a topic convention before the first publisher goes live. Translation works only if every protocol publishes into the same hierarchy. The topics and wildcards page covers design.

An illustrative scenario. A food plant publishes filler states from an edge gateway over MQTT. Quality needs every reject event in its LIMS, which reads a JMS queue. The cloud data team wants the same events in Kafka for a weekly yield model. On one Solace broker this becomes one MQTT topic tree, one queue subscribed to site1/*/*/*/reject for the JMS consumer, and a Kafka Sender bound to a second queue. Three consumers, one publish, no custom code in the middle.

Where protocol translation goes wrong

Multi-protocol brokers fail in predictable ways, and none of them is specific to Solace. The ones we would design against:

  • Silent quality-of-service changes. A device team configures QoS 2 because it sounds safest, the broker treats it as QoS 1, and a consumer that cannot tolerate duplicates double-counts production. The fix is idempotent consumers, not a protocol setting.
  • Lost metadata. A JMS consumer filters on a property the MQTT publisher never set, so messages arrive and are ignored. Nobody sees an error.
  • Topic sprawl by protocol. Each team invents its own hierarchy because each protocol “feels” different. Six months later the same machine state exists on three topics with three payload formats.
  • Slow consumers on a shared broker. A REST endpoint that answers in two seconds holds back a delivery point while MQTT telemetry keeps arriving. Queue quotas and alerts need to be set per consumer, not per broker.

These are design problems, which is why they belong in the architecture review rather than in the first incident report. Our MQTT guide for manufacturing covers the device side of the same questions.

Limits and open questions

As of October 2026, the public documentation states or leaves open the following:

  • MQTT QoS 2 is downgraded. Solace accepts QoS 2 publishes and subscriptions and treats them as QoS 1, and QoS 1 shared subscriptions are downgraded to QoS 0 (MQTT 5.0 conformance). Details on the MQTT page.
  • Retained messages are Controlled Availability, implemented through retain caches (Using MQTT). That matters for Sparkplug B, covered on the Sparkplug page.
  • Kafka bridging is documented for software brokers only, “and not appliance event brokers” (Kafka bridging). The page we read does not mention Solace Cloud. Ask.
  • JMS means JMS 1.1 functionality in Solace’s own API; the docs state both namespaces “provide the same JMS 1.1 functionality” (Solace JMS API).
  • AMQP means 1.0 only. Clients written for RabbitMQ’s AMQP 0-9-1 will not connect.
  • Metadata mapping is not fully tabulated in one public place. Test it.
  • Standard Edition limits apply to all protocols: 1,000 connections and 10,000 messages per second ingress, and the docs mark it not production deployable (editions). See Standard vs Enterprise.

How to evaluate Solace protocols

  • List every application and device that will connect, with the protocol and client library each one uses today.
  • For each MQTT client, confirm it never relies on QoS 2, QoS 1 shared subscriptions or retained messages in production.
  • For each JMS application, confirm it uses only JMS 1.1 features, or plan for Qpid JMS over AMQP.
  • For Kafka, confirm which broker form factor you will run and which of the three integration mechanisms it supports.
  • Test header, property and correlation ID mapping between the protocol pairs you actually use.
  • Load-test REST publishers at peak rate; HTTP adds a round trip per message.
  • Agree a topic hierarchy that every protocol publishes into, and enforce it with access control lists.
  • Ask Solace which protocol features are Controlled Availability or Beta in your target release.

Deeper

  • Solace MQTT: versions, QoS behaviour, shared subscriptions, retained messages, and when to keep a plant MQTT broker in front
  • JMS, AMQP and REST: the enterprise protocols, REST messaging and microgateway modes, and migrating from other JMS brokers
  • Kafka Integration: in-broker bridging, the Kafka wireline proxy and connectors, and when each fits
  • Solace SDKs: the messaging APIs by language, the Spring and Quarkus integrations, and how to choose

Protocol choice is half of the story; the other half is how brokers link across sites, covered on the event mesh page. Back to the Solace hub.

Frequently asked questions

Which protocols does the Solace Event Broker support?

Solace documents its own Solace Message Format (SMF) plus MQTT 3.1.1 and 5.0, AMQP 1.0, REST over HTTP, and WebSocket transports. JMS and Jakarta Messaging are supported through Solace's Java APIs and through AMQP clients. Kafka is connected through in-broker Kafka bridging on software brokers, an open-source wireline proxy, or connectors. As of October 2026, Solace lists these across Cloud, Software and Appliance form factors, with Kafka bridging the exception.

Can an MQTT device publish and a JMS application receive the same message on Solace?

Yes. The broker converts every incoming message to its internal format and routes it by topic, so an MQTT publish can be delivered to a JMS consumer, an AMQP client, a REST endpoint or a queue. Payloads pass through unchanged. Headers, properties and quality-of-service settings do not all map one to one, so test the fields your consumers depend on before go-live.

What is SMF in Solace?

SMF, the Solace Message Format, is Solace's native binary messaging protocol. It runs over TCP, TLS and WebSocket and is what Solace's own APIs (C, Java, .NET, Python, Go, JavaScript and others) speak. Every message that enters the broker over an open protocol is converted to SMF for routing, which is how one broker can bridge MQTT, AMQP, REST and JMS clients.

Should I use Solace's SDKs or open protocols like MQTT and AMQP?

Use open protocols when portability matters most: devices, third-party products and applications you may move to another broker. Use Solace's APIs when you need features the open protocols do not carry, such as Solace-specific flow control, partitioned queues across every client type, or the lowest latency. Many estates mix both: MQTT at the edge, Solace APIs or JMS in the data centre.

Is Solace still called PubSub+?

No. Solace renamed PubSub+ to Solace Platform on 14 May 2025, and the PubSub+ Event Broker became the Solace Event Broker. The protocols and APIs did not change with the rename, but many package names, Docker images and GitHub repositories still carry pubsubplus, so you will see both names when you install client libraries.

References and further reading

  1. MQTT (Using MQTT with Solace event brokers) · SolaceThe documented MQTT versions, QoS behaviour and limits.
  2. Solace Messaging APIs overview · Solace
  3. Component maps: protocols and APIs · Solace
  4. Kafka Bridging overview · Solace
  5. MQTT Version 5.0, OASIS Standard · OASIS
  6. Solace Event Broker product page · Solace

← Solace

Have a project that needs technical ownership?

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