# Broker MQTT Un **broker MQTT** est un serveur qui implémente le protocole MQTT et orchestre les échanges entre clients selon un modèle *publish/subscribe*. Les producteurs publient des messages sur des *topics*, et le broker se charge de les relayer aux clients abonnés à ces topics. Ce découplage entre émetteurs et récepteurs en fait une brique centrale des architectures IoT et des systèmes distribués asynchrones. ## Rôle du broker Au-delà du simple relais de messages, le broker assure plusieurs fonctions transverses : - **sécurité** : authentification, chiffrement TLS, listes de contrôle d'accès (ACL) ; - **gestion des sessions** et reprise après reconnexion ; - **gestion des abonnements** et de l'arborescence des topics ; - **qualité de service (QoS)** avec trois niveaux : - *0* — au plus une fois (best effort, sans accusé), - *1* — au moins une fois (accusé de réception), - *2* — exactement une fois (échange en quatre temps) ; - **rétention** et stockage temporaire des messages pour les clients déconnectés. Un broker MQTT peut s'exécuter sur des cibles très variées — poste de travail, serveur cloud, passerelle IoT — et il existe de nombreuses implémentations, open source comme commerciales. Le choix dépend principalement de la volumétrie attendue, des exigences de sécurité et de l'écosystème cible. ## Quelques implémentations courantes - **Mosquitto** — le broker le plus répandu dans les projets DIY et l'IoT léger ; léger, simple à déployer. - **EMQX** (ex-EMQTT) — conçu pour absorber un très grand nombre de connexions simultanées, adapté aux déploiements industriels. - **RabbitMQ** — broker multi-protocoles (AMQP, MQTT…) avec support commercial, pertinent quand MQTT cohabite avec d'autres protocoles. - **ActiveMQ** — broker Apache supportant MQTT en plus de JMS et AMQP, intéressant dans un écosystème Java existant. - **JoramMQ** — orienté intégration Java, plus rarement rencontré. ## Mon choix Pour la suite, j'ai retenu **Mosquitto** pour sa légèreté, sa simplicité de configuration et sa large adoption dans la communauté IoT. Il sera installé dans un conteneur **LXC** sous Debian.