En règle générale, vous devez choisir un protocole avec de fortes garanties sur la réception par le client de paquets / messages, dans quel ordre et si la duplication est autorisée.
Pour un réseau d'appareils IoT qui s'envoient des messages de taille petite à modérée , l'utilisation de MQTT avec Quality of Service 2 semble bien correspondre à votre cas d'utilisation. Comme indiqué dans le lien HiveMQ:
La QoS la plus élevée est de 2, elle garantit que chaque message n'est reçu qu'une seule fois par la contrepartie. C'est le niveau de service le plus sûr et le plus lent. La garantie est fournie par deux flux aller-retour entre l'expéditeur et le destinataire.
Notez que QoS 2 conserve l'ordre des messages et, comme indiqué, empêche les messages en double.
L' utilisation de MQTT QoS 2 représente un surcoût substantiel par rapport à la QoS 0 standard (qui s'apparente à un message de type `` tirer et oublier ''; s'il n'atteint pas le courtier, le message n'est pas renvoyé et il disparaît pour toujours ) - QoS 2 nécessite 4 messages ( PUBLISH
de l'expéditeur, PUBREC
du courtier, PUBREL
du client, PUBCOMP
du courtier), donc cela prendra généralement plus de temps à traiter, consommera plus de ressources (d'où des transmissions radio plus longues et une plus grande consommation d'énergie sur tous les points de terminaison contraints).
Un message MQTT QoS 2 sera simplement renvoyé de l'expéditeur à plusieurs reprises jusqu'à ce qu'il reçoive un accusé de réception du courtier.Par conséquent, votre message devrait finalement passer, même si votre connexion est imparfaite.
Il vous appartient de déterminer si un protocole de publication-abonnement basé sur un sujet est approprié pour votre cas d'utilisation; l'article Wikipedia pourrait vous aider à vous faire une idée.