MQTT managé dans le cloud

Les limites d'un broker MQTT public à connaître avant de vous lancer

Les brokers de test publics sont formidables pour apprendre et faire des démos, mais ils s'accompagnent de vraies contraintes. Comprenez la confidentialité, la fiabilité, les topics partagés et les limites de débit, comment concevoir vos tests en conséquence, et les signes qu'il est temps de passer à un broker privé.

Illustration des limites d'un broker MQTT public, montrant de nombreux clients anonymes partageant un même espace de topics ouvert avec des jauges de débit et de taille
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

Les limites d'un broker MQTT public sont faciles à ignorer pendant la première heure enthousiaste d'un projet, et pénibles à découvrir devant un client. Cet article explique les quatre principales contraintes des brokers de test publics, en prenant broker.connectmq.com comme exemple concret, montre comment concevoir vos tests pour les respecter et liste les signaux clairs qu'il est temps de passer à un broker privé.

Pourquoi les brokers publics ont-ils des limites ?

Un broker public est un service partagé et anonyme. N'importe qui sur Internet peut se connecter, publier et s'abonner sans compte. Cette ouverture est précisément ce qui le rend utile pour les tutoriels et les tests rapides, et précisément la raison pour laquelle il a besoin de limites : sans elles, un seul script défaillant pourrait inonder le broker et le rendre inutilisable pour tous les autres.

Les limites ne sont pas un défaut. Ce sont elles qui gardent un service communautaire gratuit utilisable. ConnectMQ exploite broker.connectmq.com, son serveur MQTT public gratuit, exactement dans ce but : un endroit sans configuration pour apprendre MQTT, tester une bibliothèque ou montrer une démo, à côté de brokers privés pour les vraies charges de travail. L'article sur le serveur MQTT public gratuit explique comment utiliser efficacement broker.connectmq.com ; celui-ci se concentre sur ce qu'il ne peut pas faire.

Limite 1 : aucune confidentialité

Sur un broker public, chaque topic est lisible par chaque client. Un abonné à # reçoit tout ce qui est publié, sous réserve des protections propres au broker. Les noms de topics ne sont pas des secrets, et des préfixes obscurs ne font que réduire les collisions accidentelles.

Ce que cela signifie en pratique :

  • Ne publiez jamais de données personnelles, de traces de localisation, de captures de caméra ni quoi que ce soit qui identifie une personne ou un logement.
  • Ne publiez jamais d'identifiants, de clés d'API ou de mots de passe Wi-Fi, même « temporairement ».
  • Ne pilotez jamais de vrais équipements depuis un topic public. N'importe qui peut publier sur votre topic de commande, pas seulement le lire.
  • Partez du principe que les payloads sont enregistrés par quelqu'un, quelque part.

Utilisez un préfixe aléatoire comme connectmq/demo/9b2e7/ pour que votre trafic de test n'entre pas en collision avec celui des autres. C'est une politesse et une commodité, pas une mesure de sécurité.

Limite 2 : aucune garantie de service

Les brokers publics sont proposés au mieux, sans engagement. Il n'y a ni SLA, ni disponibilité garantie, ni engagement de support. Le broker peut redémarrer pour maintenance, les limites peuvent changer, et les sessions ne survivent pas au-delà de la fenêtre d'expiration. Sur broker.connectmq.com, l'expiration de session est plafonnée à 30 minutes : un appareil hors ligne plus longtemps repart de zéro.

Pour une démo ou un atelier, c'est parfait. Pour un produit, un pilote ou tout ce dont un client dépend, ça ne l'est pas.

Prévoyez les silences

Comme il n'y a aucune garantie, écrivez vos clients de test pour qu'ils supportent les interruptions. Activez la reconnexion automatique, réabonnez-vous dans le callback de connexion plutôt qu'une seule fois au démarrage, et ne considérez pas un message manquant comme un bug de votre code tant que vous n'avez pas écarté un redémarrage du broker. Ces habitudes sont de bonnes pratiques sur n'importe quel broker et facilitent le passage ultérieur en production.

Limite 3 : un espace de topics partagé

Tous les utilisateurs publics partagent une même arborescence de topics. Conséquences :

  • Collisions. Des noms populaires comme test, sensor/temp ou home/livingroom sont utilisés par beaucoup de monde. Vous recevrez leurs messages et ils recevront les vôtres.
  • Surprises avec les retained messages. Le retained message de quelqu'un d'autre sur un topic générique apparaîtra dès que vous vous abonnerez.
  • Bruit des wildcards. Un abonnement trop large renvoie du trafic que vous n'avez jamais demandé et consomme votre budget de débit.

Préfixez toujours vos topics avec un préfixe unique et abonnez-vous de manière ciblée.

Limite 4 : limites de débit, de taille et d'abonnements

Le broker public plafonne les ressources par client pour que chacun bénéficie d'un accès équitable. Sur broker.connectmq.com, les limites sont les suivantes :

Limite Valeur sur le broker public Pourquoi elle existe
Taille des messages 64 Ko par message Empêche les gros payloads d'accaparer la bande passante
Débit de publication 10 messages par seconde et par client Empêche les scripts d'inonder le broker
Abonnements 10 par client Limite le coût de diffusion par client
Profondeur des topics 8 niveaux de topic Garde la correspondance des topics efficace
QoS 0, 1 et 2 Comportement complet du protocole pour l'apprentissage
Expiration de session Jusqu'à 30 minutes Libère les ressources des sessions abandonnées
Authentification Anonyme, tout client ID unique non vide Aucune configuration pour les débutants

Dépasser une limite peut entraîner le rejet d'opérations ou une déconnexion. Si vous vous connectez en MQTT 5, journalisez les reason codes reçus par votre client ; ils vous en disent bien plus qu'un générique « connexion perdue ».

Concevoir des tests qui respectent les limites

Voici un éditeur Python (paho-mqtt 2.x) qui reste largement dans les limites publiques : client ID unique, préfixe unique, topics peu profonds, débit plafonné et payloads compacts.

import json
import random
import time
import uuid
import paho.mqtt.client as mqtt

RUN_ID = uuid.uuid4().hex[:6]
PREFIX = f"connectmq/demo/{RUN_ID}"          # 3 niveaux, laisse de la place en dessous
MAX_RATE = 5                                 # messages par seconde, sous le plafond de 10/s
INTERVAL = 1.0 / MAX_RATE


def on_connect(client, userdata, flags, reason_code, properties):
    print("Connected:", reason_code, "prefix:", PREFIX)


def on_disconnect(client, userdata, flags, reason_code, properties):
    print("Disconnected:", reason_code)


client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=f"limits-demo-{RUN_ID}",
    protocol=mqtt.MQTTv5,
)
client.on_connect = on_connect
client.on_disconnect = on_disconnect
client.connect("broker.connectmq.com", 1883, keepalive=60)
client.loop_start()

try:
    for i in range(50):
        payload = json.dumps({"i": i, "t": round(20 + random.random() * 2, 2)})
        assert len(payload.encode()) < 64 * 1024
        client.publish(f"{PREFIX}/sensor/temp", payload, qos=1)
        time.sleep(INTERVAL)
finally:
    client.loop_stop()
    client.disconnect()

Observez-le depuis un second terminal, en vous abonnant uniquement à votre propre préfixe :

mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-RUNID -t "connectmq/demo/RUNID/#" -v

Remplacez RUNID par le préfixe affiché par le script.

Pièges courants

  1. Client ID vide. Le broker public exige un client ID non vide. Générez-en un unique à chaque exécution.
  2. Deux scripts avec le même client ID. Chaque connexion expulse l'autre, ce qui produit une boucle de reconnexion.
  3. Boucles de publication serrées. Une boucle while True sans pause dépasse la limite de débit en moins d'une seconde.
  4. Arborescences de topics trop profondes. connectmq/demo/abc/site/area/line/cell/machine/sensor compte 9 niveaux et dépasse la limite de 8. Aplatissez vos topics de test.
  5. JSON volumineux ou images. Tout ce qui approche 64 Ko a sa place sur un broker privé, et les images ont rarement leur place dans MQTT tout court.

Les signes qu'il est temps de passer à un broker privé

Quittez le broker public dès que vous remarquez l'un de ces points :

  • Les données mettraient quelqu'un dans l'embarras ou lui nuiraient si un inconnu les lisait.
  • Un appareil agit sur les commandes qu'il reçoit.
  • Un client, un collègue ou un enseignant compte sur le fait que le système fonctionne demain.
  • Vous avez besoin de plus de 10 abonnements par client, de messages plus volumineux ou de hiérarchies de topics plus profondes.
  • Vous voulez voir qui est connecté et gérer des identifiants par appareil.

La comparaison broker MQTT public ou privé détaille la bascule, et passer du prototype à la production couvre le reste du parcours.

Ce qui change avec un plan privé

Un broker ConnectMQ privé, c'est-à-dire un broker MQTT managé, conserve le même protocole et le même code client, mais change les règles :

  • Authentification avec un nom d'utilisateur, un mot de passe et un client ID générés, le client ID étant lié à ces identifiants.
  • Isolation vis-à-vis des autres tenants : votre espace de topics vous appartient.
  • TLS sur le port 8883 et Secure WebSocket sur le port 8084 avec un certificat Let's Encrypt.
  • Des limites selon le plan : le plan Serverless gratuit autorise jusqu'à 25 connexions, QoS jusqu'à 1 et des messages de 256 Ko ; le plan Serverless payant porte cela à 1 000 connexions, QoS 2, messages de 1 Mo et abonnements partagés.
  • Des outils dans le portail comme un client dans le navigateur, un explorateur de topics en direct, un tableau de bord et des alertes sur seuil.

Passez gratuitement à un broker ConnectMQ privé

Quand le serveur MQTT public gratuit a rempli son rôle, créez votre broker privé gratuit sur le plan Serverless, sans carte bancaire, et pointez le même script vers le port 8883 avec vos nouveaux identifiants. Lisez le guide du broker MQTT cloud pour planifier la suite, découvrez pourquoi un broker MQTT managé vous épargne du travail d'exploitation, ou rendez-vous sur connectmq.com pour comparer les plans.

Questions fréquentes

Est-il sûr d'utiliser un broker MQTT public ?

C'est sûr pour apprendre et faire des démos avec des données anodines. Ce ne l'est pas pour des données personnelles, des identifiants ou le pilotage de vrais équipements, car n'importe qui peut lire n'importe quel topic et y publier.

Que se passe-t-il si je dépasse la limite de débit du broker public ?

Des opérations peuvent être rejetées ou le client déconnecté. Restez sous 10 messages par seconde et par client, et vérifiez les reason codes MQTT 5 lors du débogage.

Pourquoi est-ce que je reçois des messages que je n'ai pas publiés ?

D'autres utilisateurs publient sur les mêmes noms de topics. Utilisez un préfixe unique comme connectmq/demo/<random-id>/ et abonnez-vous uniquement à ce préfixe.

Le broker public conserve-t-il ma session si mon appareil se déconnecte ?

Uniquement pendant la fenêtre d'expiration de session, plafonnée à 30 minutes sur broker.connectmq.com. Au-delà, l'appareil démarre une nouvelle session.

Articles liés

Broker MQTT BYOC : le modèle Bring Your Own Cloud expliqué

Un broker MQTT BYOC tourne dans votre compte cloud mais est exploité par un fournisseur. Découvrez le fonctionnement du modèle, la répartition des responsabilités et comment préparer votre compte.

9 min de lecture

Messages MQTT par seconde : comment estimer et mesurer le débit

La planification du débit MQTT se résume à quelques formules et à une mesure honnête. Découvrez comment estimer les messages entrants et sortants par seconde, tenir compte des pics et faire correspondre le résultat à une offre de broker.

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.