Protocoles / sérialisation binaire

Matcher de topics MQTTavec la raison pour chaque topic

Saisissez un filtre d’abonnement puis un topic publié par ligne ; choisissez la version et le scénario.

Matcher de topics MQTT

Filtre de topic abonné

Topics publiés

Résultats par ligne

Filtre et topics restent dans ce navigateur. Aucune connexion à un broker n’est établie.

Protocole et livraison

+ occupe un niveau entier ; # uniquement le dernier niveau entier. Un nom publié ne peut contenir de joker.

Un filtre et 1 000 lignes au plus. Seules les lignes vides sont ignorées ; espaces et niveaux vides restent.

Saisissez un filtre et des topics.

Quand un capteur publie sans qu’un abonné voie son message, le Matcher de topics MQTT révèle le niveau, la casse, la barre oblique ou le préfixe $ qui diffère. Il compare les noms tels quels, sans retirer les espaces.

Testez une liste de topics et lisez séparément le résultat du filtre et la livraison d’un ancien message retenu à un nouvel abonnement. Avec un abonnement partagé MQTT 5, le filtre peut correspondre sans déclencher cette livraison initiale.

Pourquoi utiliser le Matcher de topics MQTT ?

Une correspondance n’implique pas toujours une livraison initiale.

Voir où s’arrêtent les jokers

Le Matcher de topics MQTT montre que + couvre exactement un niveau et que # final comprend aussi le parent. Un niveau vide ou un topic système commençant par $ reste intact dans le calcul.

Arbre de topics où une branche couvre un seul niveau et une autre le parent avec ses descendants

Distinguer filtre et message retenu

Un topic stocké peut correspondre à un abonnement normal et à un abonnement partagé MQTT 5. Un nouveau membre du groupe ne reçoit pourtant pas la copie déjà retenue ; le rapport sépare ces deux réponses.

Deux abonnements correspondent au topic stocké, mais seul le normal reçoit l’ancien message retenu

Trois vérifications avant de s’abonner

01

Garder le nom exact

Collez les topics réellement publiés, un par ligne. La casse, les espaces, les barres obliques initiales et les niveaux vides comptent ; seules les lignes totalement vides sont ignorées.

  • L’exemple des jokers montre qu’un + couvre aussi le niveau vide de sensors//temperature.
02

Choisir version et moment

MQTT 5 reconnaît $share/groupe/filtre comme abonnement partagé. MQTT 3.1.1 ne définit pas ce mécanisme. Le mode retenu concerne uniquement la première livraison à un nouvel abonné.

  • L’exemple partagé sélectionne en même temps MQTT 5 et le scénario retenu.
03

Lire le premier écart

Une ligne sans correspondance indique le premier niveau différent. Pour un message retenu partagé, la règle peut être vraie alors que la copie initiale n’est pas envoyée. Une modification bloque l’export de l’ancien résultat.

  • Désactivez le test auto pour lancer avec Ctrl/Cmd+Entrée.

Le comportement du filtre, ligne par ligne

Jokers limités aux niveaux

Les wildcards MQTT + et # ne sont pas des motifs glob : + remplace un niveau entier, # uniquement le dernier et inclut le parent. * et ? n’ont aucun rôle spécial.

Un filtre de topic, plusieurs noms

Comparez jusqu’à 1 000 noms à un filtre de topic. Le numéro de ligne d’origine reste visible ; les noms invalides ne sont pas confondus avec de simples non-correspondances.

Abonnement partagé selon la version

En MQTT 5, $share/groupe/ est retiré avant la comparaison. En 3.1.1, ce préfixe reste littéral ; aucune extension privée de broker n’est supposée.

Ce que la prédiction locale ne couvre pas

Un nom publié n’est pas un motif
Les caractères génériques + et # n’ont un sens que dans le filtre et doivent occuper un niveau entier ; # doit être final. Un topic publié contenant ces caractères est invalide.
Le partage standard exige MQTT 5
En mode 3.1.1, $share est comparé comme des niveaux ordinaires. Certains brokers ont des extensions, mais cette page ne prétend pas connaître leur comportement.
Le mode retenu décrit un instant précis
Chaque ligne représente un topic possédant déjà un message retenu. Pour un abonnement normal MQTT 5, Retain Handling 0 est supposé ; QoS, reconnexion, suppression et futurs messages ne sont pas simulés.
Aucune connexion au broker
Le Matcher de topics MQTT ne vérifie ni ACL, ni identifiants, ni livraison réelle. Une correspondance locale ne prouve pas que le broker a accepté l’abonnement.

Questions sur le Matcher de topics MQTT

Pourquoi un filtre de topic ne correspond-il pas au topic publié ?

Vérifiez le premier niveau indiqué, la casse, les barres obliques et l’exception des topics commençant par $. Le filtre n’est pas normalisé avant la comparaison.

Que signifie + dans un filtre de topic MQTT ?

+ remplace exactement un niveau entier, y compris un niveau vide entre deux barres obliques. Il ne remplace pas une partie de mot ni zéro niveau.

Le # doit-il être placé à la fin du filtre ?

Oui. # doit occuper seul le dernier niveau, ou constituer le filtre entier. Il peut alors couvrir le parent ainsi que ses descendants.

Peut-on publier sur un topic contenant un wildcard ?

Non. Les caractères de joker ne sont autorisés que dans un filtre d’abonnement. Cette page signale un nom publié contenant + ou # comme invalide.

Pourquoi un abonnement à # ne reçoit-il pas les topics $SYS ?

Un filtre qui commence par un joker ne correspond pas à un nom commençant par $. Essayez séparément un filtre explicite comme $SYS/#.

Une question sur la correspondance ?

Essayer le Matcher de topics MQTT

Revenez au Matcher de topics MQTT avec un vrai filtre et vos topics ; activez le mode retenu seulement pour la réception initiale d’un message déjà stocké.

Le calcul reste dans votre navigateur.