web-dev-qa-db-fra.com

MQTT vs XMPP Que dois-je choisir?

Présentation

J'envoie des messages entre un client (téléphone Android) et un serveur (Windows Server). Utiliser une connexion persistante sur TCP, quel protocole serait la meilleure solution. Je regarde les performances, l'évolutivité, la taille des messages et la durée de vie de la batterie. Les messages doivent arriver à destination dans l'ordre et ne peuvent pas être des doublons.

MQTT

Cela semble être la meilleure solution, mais il semble y avoir de petits exemples de grande implémentation avec beaucoup d'utilisateurs. Je ne sais pas si je peux intégrer cela dans le serveur Windows, ou si cela devrait être une autre application ou un autre serveur en cours d'exécution. Enfin, il semble y avoir un manque d'informations à ce sujet en général.

XMPP

Cela semble avoir beaucoup d'implémentation, d'exemples et même un livre:). Cependant, l'objectif principal semble être pour les clients de messagerie instantanée et des choses comme Google Talk. Sera-ce une solution optimale pour la messagerie entre le serveur et le client. Je sais qu'actuellement XMPP est principalement utilisé dans les architectures client à serveur à client.

Veuillez me corriger si je me trompe et merci d'avance pour tout conseil.

37
Scott

Cela dépend de ce que vous essayez de faire et du matériel que vous utilisez.

MQTT a un trafic de maintien en vie très faible. XMPP est un protocole de messagerie instantanée et a une surcharge beaucoup, beaucoup plus élevée dans la gestion des messages de présence entre tous les clients.

Si vous avez une petite contrainte d'encombrement mémoire, alors avoir à gérer l'analyseur XML peut rendre l'utilisation de XMPP impossible.

Gardez à l'esprit que MQTT signifie Message Queue Telemetry Transport, c'est-à-dire qu'il s'agit d'un protocole de transport et ne définit pas du tout le format du message - vous devrez le fournir; XMPP est un protocole de messagerie instantanée qui définit soigneusement tous les formats de message et requiert que tous les messages soient en XML.

En plus de tout cela: MQTT est un protocole d'abonnement de publication, XMPP est un protocole de messagerie instantanée qui peut être étendu (en utilisant XEP-0060) pour prendre en charge l'abonnement de publication. Vous devez en tenir compte lors de l’architecture de votre système.

Nous constatons que MQTT est le réalisateur silencieux. Votre kilométrage pourrait être différent.

Tout dépend ...

Retrouvez l'annonce récente de LinkedIn où ils discutent de leur utilisation de MQTT dans leur application mobile.

Cheers Mark

(BTW Andy était légèrement en retrait dans sa référence à nous. Nous sommes au Center for Educational Innovation & Technology (CEIT), Université du Queensland, Brisbane, Australie)

62
Mark Schulz

Je pense qu'en résumé, les avantages du MQTT par rapport à XMPP sont:

  • Capacité de débit: moins de frais généraux, plus léger
  • Texte binaire vs texte brut
  • QoS en place (tirer et oublier, au moins une fois et exactement une fois)
  • Pub/Sub en place (XMPP nécessite l'extension XEP-0060)
  • Pas besoin d'un analyseur XML
12
Teixi

Je pense que vous corrigez probablement votre évaluation de XMPP en ce sens qu'il s'agit d'un protocole principalement orienté vers le chat - il est également assez lourd et utilise XML de manière extensive, ce qui le rend verbeux. Je sais que les gens du CEIT à l'Uni de Brisbane ont spécifiquement étudié les différences et les utilisations optimales des deux protocoles. MQTT est très léger et à faible consommation d'énergie - il est utilisé pour les applications de télémétrie et de capteurs depuis plus de 10 ans et a été déployé à très grande échelle par IBM et ses partenaires. Les gens découvrent maintenant qu'un protocole simple comme celui-ci est idéal pour le développement mobile.

Que cherchez-vous exactement à réaliser? Le site mqtt.org vise à fournir de bons liens vers du contenu. Il existe également IRC canaux et listes de diffusion à ce sujet. Comment pouvons-nous vous aider?

6
Andy Piper