Topic Name
A publisher sends one concrete Topic Name. It cannot contain + or # wildcards.
Design MQTT Topic Names and Topic Filters, then test whether the broker will route messages as intended.
MQTT does not create folders on the broker. A Topic Name is a UTF-8 string used by a PUBLISH packet, and a Topic Filter is the subscription rule the broker compares against it. Use this workbench to design a namespace, test wildcard filters, and see the operational risk before deploying a fleet.
A publisher sends one concrete Topic Name. It cannot contain + or # wildcards.
A subscriber registers a Topic Filter. It may use + for one level and # for the final subtree.
The broker routes by comparing each publish Topic Name with active filters. Topic case and every slash matter.
Good early levels let clients subscribe by tenant, site, device, data type, or event without overly broad filters.
The publish template is split into levels. Variable levels are placeholders that become concrete Topic Names before PUBLISH.
The namespace has useful routing levels and the filter is narrow enough for a telemetry dashboard.
The generated publish topics contain no wildcards.
The wildcard placement is valid for a Topic Filter.
Only the intended tenant and metric arrive.
Estimated concrete topics from the selected fleet size.
Estimated matching topics for this subscription.
No + or #. A template can show variables for teaching, but the actual packet carries a filled-in string.
+ matches one complete level. # matches the remaining subtree and must be the final level.
A filter that starts with # or + does not match Topic Names that start with $.
Tenant, site, device, and data category levels make authorization and dashboards easier than flat strings.
MQTT defines Topic Names for PUBLISH and Topic Filters for SUBSCRIBE. Wildcards belong to Topic Filters, not Topic Names.
+ and # must occupy a whole level. # must be either the entire filter or the final level after a slash.
The broker matches strings. Hierarchies are conventions that help humans, ACLs, dashboards, and subscriptions behave predictably.
Design a filter that sees all telemetry for one tenant but not commands or status updates.
Change the namespace so a maintenance tool can subscribe to commands for one site without receiving every site.
Use a status topic and decide whether your filter should include all devices, one site, or one device.