The MQTT Publisher is the gateway’s uplink. It reads committed batches out of the Local Buffer, publishes them to the cloud MQTT broker over TLS, and only advances the sync cursor once the broker has acknowledged delivery.
QoS 1, cursor-driven
Messages are published at QoS 1 (at-least-once). The publisher treats the
broker PUBACK as the signal to advance SYNC_CURSOR.acked_seq — the buffer
is never pruned ahead of a confirmed delivery.
The TLS handshake is mutual: the broker verifies the gateway’s client certificate and the gateway pins the broker’s CA. An untrusted peer never gets a session.
While connected, batches flow continuously; the publisher keeps the in-flight window small to bound memory and reordering.
On a dropped link the publisher backs off and retries. Because the buffer holds everything, no telemetry is lost — the backlog simply drains once the link is back.