Fondamentaux MQTT

40 questions d'entretien MQTT et leurs réponses pour développeurs IoT

Quarante questions d'entretien MQTT avec des réponses concises sur les fondamentaux, la QoS, les sessions, les retained messages, le Last Will, MQTT 5 et la sécurité, ainsi que des moyens de mettre en pratique chaque concept sur broker.connectmq.com.

Illustration des questions d'entretien MQTT montrant un candidat au tableau blanc qui dessine un broker, des topics et des niveaux de QoS
Essayez-le sur votre propre broker MQTTObtenez un broker MQTT privé et managé avec l’offre Free et partez d’exemples de code prêts à l’emploi.
Essayer gratuitement Exemples de code Aucune carte bancaire requise

Ces 40 questions d'entretien MQTT couvrent ce que demandent réellement les recruteurs pour les postes IoT, embarqué et backend : fondamentaux, QoS, sessions, retained messages, Last Will, MQTT 5 et sécurité. Chaque réponse est assez courte pour être dite à voix haute, et la section pratique montre comment démontrer chaque concept sur un broker réel avant votre entretien.

Comment utiliser ces questions d'entretien MQTT

Lisez une réponse, puis essayez de l'expliquer sans regarder. Les recruteurs s'intéressent moins aux définitions apprises par cœur qu'aux compromis : quand utiliseriez-vous la QoS 0, pourquoi les retained messages peuvent-ils vous surprendre, que se passe-t-il si deux appareils partagent un client ID. Dans la mesure du possible, exécutez les commandes de la section pratique sur le serveur MQTT public gratuit afin de pouvoir décrire ce que vous avez vu, et non ce que vous avez lu.

Fondamentaux (questions 1 à 10)

1. Qu'est-ce que MQTT ?

Un protocole de messagerie publish/subscribe léger qui fonctionne sur TCP, conçu pour les appareils contraints et les réseaux peu fiables. Les versions 3.1.1 et 5.0 sont des standards OASIS.

2. Qu'est-ce qu'un broker ?

Le serveur qui reçoit tous les messages publiés et les achemine vers les clients dont les abonnements correspondent. Il gère aussi les sessions, les retained messages et les Wills. Voir le rôle d'un broker MQTT.

3. En quoi le publish/subscribe diffère-t-il du requête/réponse ?

Les éditeurs et les abonnés ne s'adressent jamais directement les uns aux autres ; le broker les découple dans l'espace, dans le temps et en matière de synchronisation. Notre article sur le modèle publish/subscribe explique ces trois dimensions.

4. MQTT utilise-t-il TCP ou UDP ?

TCP, éventuellement encapsulé dans TLS ou WebSocket. MQTT-SN est la variante destinée à UDP et aux réseaux de datagrammes.

5. Quels sont les ports standard ?

1883 pour le TCP simple et 8883 pour TLS. Les ports WebSocket dépendent du broker ; 8083 et 8084 avec le chemin /mqtt sont courants.

6. Qu'est-ce qu'un topic ?

Une chaîne UTF-8 dont les niveaux sont séparés par /, comme site1/line2/temp. Les topics sont créés implicitement lors de la publication.

7. Expliquez les wildcards + et #.

+ correspond à exactement un niveau ; # correspond à tous les niveaux restants et doit être le dernier caractère d'un filtre. Les wildcards ne sont valides que dans les abonnements.

8. À quoi sert le client ID ?

Il identifie la session sur le broker. Deux connexions avec le même ID amènent le broker à déconnecter la plus ancienne, ce qui provoque souvent une boucle de reconnexion.

9. Qu'est-ce que le keep-alive ?

La durée maximale de silence, en secondes, à laquelle un client s'engage. Il envoie un PINGREQ lorsqu'il est inactif ; le broker coupe la connexion après environ 1,5 fois cet intervalle sans trafic.

10. Pourquoi MQTT est-il populaire dans l'IoT ?

Faible surcoût par paquet, livraison en push, connexions uniquement sortantes qui traversent le NAT, et fonctions de fiabilité intégrées comme la QoS et les sessions persistantes.

QoS et livraison (questions 11 à 18)

11. Décrivez les trois niveaux de QoS.

La QoS 0 correspond à au plus une fois, sans acquittement. La QoS 1 correspond à au moins une fois, avec PUBACK. La QoS 2 correspond à exactement une fois, avec PUBREC, PUBREL et PUBCOMP.

12. La QoS est-elle de bout en bout ?

Non. La QoS s'applique séparément au tronçon éditeur-broker et au tronçon broker-abonné. L'abonné reçoit au plus petit des deux niveaux entre la QoS de publication et la QoS de son abonnement.

13. Quand choisiriez-vous la QoS 0 ?

Pour une télémétrie fréquente où l'échantillon suivant remplace le précédent, et où une perte occasionnelle est acceptable.

14. Pourquoi la QoS 1 peut-elle produire des doublons ?

Si le PUBACK est perdu, l'émetteur retransmet avec le drapeau DUP positionné. Les applications doivent être idempotentes ou dédupliquer.

15. Que coûte la QoS 2 ?

Quatre paquets par message et un état supplémentaire des deux côtés, ce qui réduit le débit. Ne l'utilisez que lorsque les doublons sont réellement nuisibles. Plus de détails dans les niveaux de QoS MQTT expliqués.

16. MQTT garantit-il l'ordre des messages ?

Les messages d'un même éditeur, sur un même topic et avec la même QoS, arrivent dans l'ordre. Aucune garantie d'ordre n'existe entre topics ou entre éditeurs.

17. Qu'est-ce qu'une fenêtre de messages en vol (inflight window) ?

Le nombre de messages QoS 1/2 non acquittés autorisés simultanément. MQTT 5 l'expose sous le nom de Receive Maximum.

18. Que se passe-t-il si personne n'est abonné à un topic ?

Le broker supprime le message, sauf s'il est retenu (retained).

Sessions, retained messages et Last Will (questions 19 à 27)

19. Qu'est-ce qu'une session persistante ?

L'état conservé côté broker pour un client ID (abonnements et messages QoS 1/2 en file d'attente) d'une déconnexion à l'autre.

20. Clean Session ou Clean Start ?

En 3.1.1, Clean Session contrôle à la fois la réutilisation et la durée de vie de la session. MQTT 5 sépare cela entre Clean Start (réutilisation à la connexion) et Session Expiry Interval (durée de vie).

21. Qu'est-ce qu'un retained message ?

Le dernier message publié sur un topic avec le drapeau retain, stocké par le broker et livré immédiatement aux nouveaux abonnés.

22. Comment supprimer un retained message ?

Publiez un payload vide avec le drapeau retain sur le même topic.

23. Quel est un piège courant des retained messages ?

L'état périmé : un appareil mort depuis longtemps apparaît toujours « on » parce que son dernier statut retenu n'a jamais été effacé. Combinez-les avec un Last Will.

24. Qu'est-ce que le Last Will and Testament ?

Un message enregistré au moment de la connexion, que le broker publie si le client se déconnecte sans DISCONNECT en bonne et due forme, par exemple après une panne réseau.

25. Comment construire un statut en ligne/hors ligne fiable ?

Publiez un « online » retenu après la connexion et enregistrez un Will retenu « offline » sur le même topic.

26. Qu'est-ce que le Will Delay Interval ?

Un paramètre MQTT 5 qui retarde le Will afin qu'un client qui se reconnecte rapidement ne déclenche pas une fausse alerte de déconnexion.

27. Combien de temps les messages hors ligne sont-ils conservés ?

Aussi longtemps que la session existe et que les quotas du broker le permettent. Dans MQTT 5, Session Expiry et Message Expiry fixent des limites explicites.

MQTT 5 (questions 28 à 34)

28. Citez les principaux ajouts de MQTT 5.

Les reason codes, les user properties, l'expiration des sessions et des messages, les topic aliases, les abonnements partagés, les propriétés de requête/réponse et l'authentification étendue. Vue d'ensemble dans les fonctionnalités de MQTT 5.

29. Que sont les reason codes ?

Des codes d'un octet présents dans les acquittements et le DISCONNECT qui expliquent les résultats, par exemple 0x87 Not authorized ou 0x97 Quota exceeded.

30. Qu'est-ce qu'un abonnement partagé ?

Un filtre de la forme $share/group/topic qui répartit les messages entre les membres d'un groupe pour équilibrer la charge.

31. Qu'est-ce qu'un topic alias ?

Un entier qui remplace un long nom de topic au sein d'une même connexion, réduisant le nombre d'octets par PUBLISH.

32. Comment MQTT 5 prend-il en charge le requête/réponse ?

Le demandeur définit un Response Topic et des Correlation Data ; le répondant publie sa réponse sur ce topic avec les mêmes correlation data.

33. Que sont les user properties ?

Des paires clé/valeur arbitraires de type chaîne, attachées aux paquets, comparables aux en-têtes HTTP, utiles pour des métadonnées comme une version de contenu ou des identifiants de trace.

34. Qu'est-ce que le Message Expiry Interval ?

Une durée de vie par message au-delà de laquelle le broker le supprime s'il n'a pas été livré, ce qui empêche des commandes périmées de s'exécuter plus tard.

Sécurité et exploitation (questions 35 à 40)

35. Comment sécuriser MQTT ?

TLS sur le port 8883, des identifiants uniques par appareil, des permissions de topics selon le principe du moindre privilège lorsque le broker le permet, et aucune donnée sensible sur les brokers publics. Voir les bonnes pratiques de sécurité MQTT.

36. Qu'est-ce que le TLS mutuel ?

Un TLS dans lequel le client présente son propre certificat, afin que le broker puisse l'authentifier de façon cryptographique.

37. Pourquoi ne pas utiliser le port 1883 en production ?

Les identifiants et les payloads circulent en clair et peuvent être capturés à n'importe quel saut du réseau.

38. Que sont les topics $SYS ?

Des topics réservés au broker qui exposent des informations d'état. Les abonnements avec le wildcard # ne correspondent pas aux topics qui commencent par $.

39. Comment faire monter en charge les consommateurs MQTT ?

Utilisez des abonnements partagés pour répartir la charge, gardez des callbacks rapides et limitez étroitement la portée des abonnements avec wildcards.

40. Broker auto-hébergé ou broker MQTT managé ?

L'auto-hébergement offre un contrôle total, mais ajoute le travail de correctifs, de certificats, de supervision et de montée en charge. Un broker MQTT managé transfère cette charge opérationnelle au fournisseur.

Entraînez-vous avant l'entretien

Rien ne vaut l'expérience. Installez mosquitto_pub et mosquitto_sub, choisissez un suffixe aléatoire, et exécutez ces commandes sur le serveur MQTT public gratuit broker.connectmq.com (anonyme, client ID unique, données publiques) :

# Q21-22 : retained message, puis suppression
mosquitto_pub -h broker.connectmq.com -p 1883 -i iq-pub-5c9d \
  -t "connectmq/demo/5c9d/lamp" -m "on" -r -q 1
mosquitto_sub -h broker.connectmq.com -p 1883 -i iq-sub-5c9d \
  -t "connectmq/demo/5c9d/#" -v -C 1
mosquitto_pub -h broker.connectmq.com -p 1883 -i iq-pub-5c9d \
  -t "connectmq/demo/5c9d/lamp" -r -n

# Q24-25 : Last Will. Lancez ceci, puis fermez brutalement le terminal (pas Ctrl+C)
mosquitto_sub -h broker.connectmq.com -p 1883 -i iq-will-5c9d \
  -t "connectmq/demo/5c9d/ping" -k 10 \
  --will-topic "connectmq/demo/5c9d/status" --will-payload "offline" \
  --will-retain --will-qos 1

# Q30 : abonnement partagé (MQTT 5). À lancer dans deux terminaux avec des -i différents
mosquitto_sub -h broker.connectmq.com -p 1883 -V mqttv5 -i iq-w1-5c9d \
  -t '$share/workers/connectmq/demo/5c9d/jobs' -v

Une checklist d'exercices à suivre :

  1. Publiez en QoS 0, 1 et 2 et observez le flux de paquets avec -d (sortie de débogage).
  2. Créez un retained message, abonnez-vous, puis effacez-le.
  3. Déclenchez un Last Will en tuant brutalement un client.
  4. Réutilisez un même client ID dans deux terminaux et observez la boucle de déconnexion.
  5. Testez un abonnement partagé avec deux workers et comptez lequel reçoit chaque message.

Revoyez le tutoriel MQTT pour tout ce qui vous semble encore flou.

Entraînez-vous sur votre propre broker ConnectMQ

Les recruteurs apprécient les candidats qui ont déjà mené un vrai déploiement. Inscrivez-vous sur app.connectmq.com pour obtenir un broker Serverless gratuit (sans carte bancaire), connectez-vous en TLS avec les identifiants générés, et utilisez le client intégré au navigateur et l'explorateur de topics en direct de ConnectMQ pour montrer précisément le comportement des sessions, des retained messages et des Wills. ConnectMQ prend en charge MQTT 3.1.1 et 5.0 : vous pouvez donc faire la démonstration des deux versions.

Questions fréquentes

Quels sujets MQTT reviennent le plus souvent en entretien ?

Les niveaux de QoS, les sessions persistantes, les retained messages, le Last Will et la conception des topics sont quasi universels. Les fonctionnalités de MQTT 5 et la sécurité sont courantes pour les postes seniors.

Dois-je connaître MQTT 5 pour un entretien ?

Pour les nouveaux projets IoT, oui, au moins les bases : reason codes, expiration de session, abonnements partagés et user properties.

Comment se préparer à un exercice pratique MQTT ?

Soyez à l'aise avec une bibliothèque cliente (Python paho-mqtt ou MQTT.js) et avec les outils en ligne de commande Mosquitto, et sachez vous connecter en TLS avec des identifiants.

Quelle bonne question poser au recruteur en retour ?

Demandez quel broker et quelle version de MQTT ils utilisent, comment ils gèrent l'identité des appareils et comment ils supervisent l'état des connexions. Cela montre votre sens de l'exploitation.

Articles liés

Qui a inventé MQTT ? L'histoire, des oléoducs à l'IoT

MQTT a été inventé en 1999 par Andy Stanford-Clark (IBM) et Arlen Nipper (Arcom) pour surveiller des oléoducs par satellite. Suivez son parcours vers l'open source, OASIS, l'ISO et les brokers MQTT managés d'aujourd'hui.

8 min de lecture

Pourquoi votre client MQTT se déconnecte sans cesse (et comment y remédier)

Les boucles de reconnexion sont l'un des problèmes MQTT les plus courants. Découvrez les cinq causes habituelles, des client ID en double aux timeouts de keep alive et aux paquets trop volumineux, et suivez une méthode de diagnostic qui identifie la vôtre.

9 min de lecture

Taille maximale d'un message MQTT : limites et stratégies pour les gros payloads

MQTT peut techniquement transporter un paquet de 256 Mo, mais les brokers, les bibliothèques clientes et les appareils imposent des limites bien plus basses. Découvrez où se trouvent les vraies limites, ce qui se passe quand on les dépasse et comment envoyer de gros payloads.

8 min de lecture

Tous les articles →

Votre broker MQTT privé, à quelques clics

Créez un compte, récupérez les identifiants de votre broker et connectez votre premier appareil — aucun serveur à installer, mettre à jour ou dimensionner.