web-dev-qa-db-ja.com

MQTTとXMPPのどちらを選択すべきですか?

概要

クライアント(Androidフォン)とサーバー(Windowsサーバー)の間でメッセージをやり取りしています。 TCPを介した永続的な接続を使用します。どのプロトコルが最適なソリューションです。パフォーマンス、スケーラビリティ、メッセージのサイズ、およびバッテリ寿命を調べています。メッセージは宛先に順番に到着する必要があり、重複することはできません。

[〜#〜] mqtt [〜#〜]

これはより良い解決策のように思えますが、多くのユーザーを伴う大規模な実装の例はほとんどないようです。これをWindowsサーバーに統合できるかどうか、または別のアプリケーションまたはサーバーを実行する必要があるかどうかはわかりません。最後に、一般的な情報が不足しているようです。

[〜#〜] xmpp [〜#〜]

これには多くの実装、例、さらには本があるようです:)。ただし、主な目的はインスタントメッセージングクライアントやGoogleトークなどです。これは、サーバーとクライアント間のメッセージングの最適なソリューションになりますか。現在、XMPPは主にクライアントツーサーバーアーキテクチャで使用されています。

私が間違っている場合は修正してください。ガイダンスを事前に感謝します。

36
Scott

何をしようとしているか、どのハードウェアを実行しているかによって異なります。

MQTTのキープアライブトラフィックは非常に低くなっています。 XMPPはIMプロトコルであり、すべてのクライアント間でプレゼンスメッセージを処理する際のオーバーヘッドがはるかに大きくなります。

メモリフットプリントの制約が小さい場合、XMLパーサーを処理する必要があるため、XMPPを使用できなくなる可能性があります。

MQTTはMessage Queue Telemetry Transportの略であることに注意してください。つまり、これはトランスポートプロトコルであり、メッセージフォーマットをまったく定義しません。これを指定する必要があります。 XMPPは、すべてのメッセージ形式を慎重に定義するインスタントメッセージングプロトコルであり、すべてのメッセージがXMLである必要があります。

これに加えて、MQTTはパブリッシュサブスクライブプロトコルであり、XMPPはパブリッシュサブスクライブをサポートするために(XEP-0060を使用して)拡張できるインスタントメッセージングプロトコルです。システムを設計するとき、これを考慮する必要があります。

MQTTが静かな達成者であることがわかりました。あなたの走行距離は異なる場合があります。

それはすべて依存しています...

LinkedInによる最近の発表を追跡し、モバイルアプリでのMQTTの使用について議論します。

乾杯

(BTWアンディは私たちへの言及で少し離れていました。私たちはオーストラリアのブリスベンにあるクイーンズランド大学教育革新技術センター(CEIT)にいます)

59
Mark Schulz

要するに、XMPPに対するMQTTの利点は次のとおりです。

  • スループット容量:より少ないオーバーヘッド、より軽量
  • バイナリとプレーンテキスト
  • 所定のQoS(Fire-and-forget、At-least-once、Exactly-once)
  • パブリッシュ/サブスクライブ(XMPPには拡張XEP-0060が必要)
  • XMLパーサーは不要
10
Teixi

XMPPの評価を修正しているのは、おもにチャット指向のプロトコルであるためだと思います。これは非常に重く、XMLを広範囲に使用して冗長にします。ブリスベン大学のCEITの人々は、2つのプロトコルの違いと最適な使用法を具体的に研究していることを知っています。 MQTTは非常に軽量で低消費電力です。10年以上にわたってテレメトリーおよびセンサーアプリケーションに使用されており、IBMおよびパートナーによって非常に大規模に展開されています。人々は現在、このようなシンプルなプロトコルがモバイル開発に理想的であることを発見しています。

正確に何を達成したいですか? mqtt.orgサイトは、コンテンツへの適切なリンクを提供することを目的としています。また、IRCチャネルとメーリングリストがあります。どのように支援できますか?

5
Andy Piper