🔥 Firehook

Blog · mqtt

Concevoir des topics MQTT : nommage, hierarchies, wildcards

Construire une structure de topics MQTT lisible et evolutive : conventions de nommage et strategie de wildcards.

Pilier broker glossy isometrique avec devices connectes et points lumineux publish/subscribe

Pourquoi le design des topics est crucial

Dans MQTT, les topics sont l’API. Une structure propre rend le systeme decouvrable et facilite les abonnes. Une structure confuse cree du couplage et complique les permissions.

Traitez le design des topics comme une architecture d’information. Vous nommez le systeme pour les humains et pour les machines.

Choisir une hierarchie stable

Un pattern courant : `/domaine/entite/id/metric`. Exemple : `devices/thermostat/42/temperature`. C’est lisible et scalable.

Evitez de placer des valeurs volatiles au milieu de la hierarchie, car cela casse les subscriptions wildcard.

Profondeur vs lisibilite

Plus de niveaux ajoute de la clarté mais augmente la complexite. Trouvez la profondeur minimale qui capture la propriete et le type d’entite.

Utilisez des conventions coherentes. Hyphen-case ou snake_case, peu importe, mais restez consistant.

Strategie des wildcards

Le wildcard `+` correspond a un niveau, `#` correspond a tout en dessous. Conceptionnez vos topics pour que ces wildcards correspondent a des regroupements logiques.

Si vous voulez s’abonner a “tous les appareils d’un batiment”, le batiment doit etre un niveau stable.

Permissions et securite

Les ACL suivent souvent des patterns de topics. Une bonne hierarchie facilite le principe du moindre privilege.

Evitez de melanger des donnees non liees sous le meme prefixe, sinon l’audit devient complexe.

Versionner la structure

Si la structure change, versionnez au plus haut niveau : `v2/devices/...`. Cela permet de migrer sans casser les clients existants.

Maintenez l’ancienne structure pendant la transition et utilisez un bridge si besoin.

Documenter les topics

Fournissez un catalogue simple : objectif, schema payload, QoS, retained, exemples. Cela rend la plateforme auto-serve.

Une doc claire transforme un systeme complexe en produit utilisable.

FAQ

Faut-il utiliser des slashes ou des points ?
Les slashes sont la convention MQTT et fonctionnent mieux avec les wildcards.
Quelle profondeur choisir ?
Aussi faible que possible tout en restant clair.
Peut-on renommer des topics ?
Oui, mais traitez cela comme un changement de version.
Mettre des IDs dans les topics ?
Oui, a un niveau logique pour filtrer proprement.
Doit-on inclure les unites ?
Plutot dans le payload ou le schema.