The summary.
DESIGN THE TOPIC HIERARCHY CONSISTENTLY AND NEVER PUT VALUES IN IT
Subscribers rely on wildcards, and each distinct topic is a separate retained channel.
Restrict every device to its own topics — without authorisation any device can publish as any other.
SET A LAST WILL MESSAGE
It is how the system learns a device has gone, rather than waiting for a timeout elsewhere.
SEQUENCE NUMBERS SHOW WHAT WAS LOST; SILENCE DOES NOT
And version every payload schema — devices in the field will run different firmware simultaneously.
Never leave units implicit; the resulting errors are invisible until something behaves absurdly.
PREFER DESIRED-STATE CONVERGENCE OVER QUEUED COMMANDS
A disconnected device catches up on reconnection with no instructions to replay. Give every command an expiry, because one delivered days late may be harmful.
KEEP CONFIGURATION IN THE SHADOW AND MEASUREMENTS IN TIME-SERIES STORAGE
DO NOT INVENT A PROTOCOL
Every problem you will meet has been solved in the established ones.