| ID | product.ingestion.mqtt_broker |
|---|---|
| Description | Multi-tenant MQTT broker with TLS and authentication. |
| Key | mqtt_broker |
| Type | microservice:broker |
| Team | Ingestion |
| Owner | ingestion@iotgateway.example |
| Status | active |
| Technologies | EMQX/Mosquitto (MQTT), MQTT, TLS, Redis |
| Attributes | max_connections: 1M, protocol: MQTT 5.0, qos: 0,1,2 |
| Tags |
The MQTT Broker is where the fleet physically connects. It terminates mutual-TLS sessions, authenticates each device against its certificate, keeps per-client session and QoS state, and routes published messages between devices and the cloud.
Why MQTT
MQTT is built for constrained, intermittently connected devices: tiny frames, persistent sessions, QoS levels for at-least-once / exactly-once delivery, and last-will messages for crash detection. That maps directly onto a fleet of field devices on flaky networks.
Could not build diagram for model "example-iot".
The device opens a TCP connection and the TLS Listener performs a mutual-TLS handshake, presenting the server cert and verifying the device’s client certificate against the trust chain.
The certificate fingerprint is checked against Device Management to confirm it maps to an active device. Rejected devices are disconnected immediately.
The Session Store either resumes a persistent session or creates a clean one, restoring any in-flight QoS 1/2 messages.
The Topic Router fans inbound telemetry to subscribers and delivers cloud commands down to the device’s subscribed topics.
Fire-and-forget. Used for high-frequency, loss-tolerant telemetry where the next sample makes the last one irrelevant.
The broker carries every device interaction, so it participates in all of the platform’s core flows.
The inbound telemetry that feeds alerting arrives here first:
Outbound commands are delivered to devices over the broker:
A newly provisioned device’s very first session is established here:
Firmware rollouts use the broker for both command delivery and progress telemetry:
1 outgoing link · 3 workflows
| Target object | Label | Link type | Relation | Raw id | Required | Description | |
|---|---|---|---|---|---|---|---|
| routes commands to | — | links | product.ingestion.command_router | — | — |
| Workflow | Model | Participant id | Participant label |
|---|---|---|---|
| Command dispatch commands.dispatch | example-iot | product.ingestion.mqtt_broker | MQTT broker |
| Device provisioning device-lifecycle.provisioning | example-iot | product.ingestion.mqtt_broker | MQTT broker |
| Telemetry to alert telemetry.alert-pipeline | example-iot | product.ingestion.mqtt_broker | MQTT broker |