20
14

More than 1 year has passed since last update.

MQTTを調べている

Last updated at Posted at 2020-04-12

この項目は、書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています。

MQTT

MQ Telemetry Transport(MQTT)はブローカーベースの軽量なパブリッシュ / サブスクライブ・メッセージング・プロトコルであり、オープンでシンプル、軽量で、実装が簡単。これらの特性により、ネットワークが高価である、帯域幅が狭い、または信頼性が低い、プロセッサまたはメモリリソースが限られている組み込みデバイスで実行する、といったような制約のある環境での使用に最適(であるが、それだけに限定はされない)

現在の最新バージョンは5.0っぽい。3.1.1からの変更は以下に。
MQTT Version 5.0 でできること

特徴

  • 1対多のメッセージ配信とアプリケーションからの分離を提供する、Pub / Sub メッセージパターン
  • ペイロードの内容(Plaintext, JSON, XML, etc)に依存しないメッセージ転送方式
  • TCP/IPによる基本的なネットワーク接続を提供
  • メッセージ配信の3つのサービスレベル:
レベル 内容
At most once
(最大1回)
メッセージは下層となるTCP/IPネットワークに基づきベストエフォートで配信。メッセージの損失または重複が発生する可能性がある。このレベルは、たとえば、次のデータがすぐに送信されるため、個々の測定値が失われても問題にならない(温度測定などの)環境センサーデータで使用される
At least once
(少なくとも1回)
メッセージは確実に到着するが、重複が発生する可能性がある
Exactly once
(正確に1回)
メッセージが1回だけ到着することが保証される。メッセージが重複したり失われたりすると誤った料金が適用される可能性がある、課金システムなどで使用でされる
  • 小さな転送オーバーヘッド(固定長ヘッダーはわずか2バイト)およびネットワークトラフィックを削減するためプロトコル交換を最小化
  • LWT(Last Will and Testament)機能を使用してクライアントの異常な切断をクライアントに通知するメカニズム
  • ペイロードの最大は 256M byte1 (プロトコル仕様上の話で個々の実装は知らない)
  • 名前にMQとあるが、いわゆるMessage Queueの機能はない(メッセージの順序保証などはされない)

標準化

  • もともと IBM と Eurotech 社が策定
  • 現在は OASIS が標準化を行っている
  • 公開されている仕様

さくっとわかりたい

アプリケーション

センサデータ収集系かチャットアプリ系で使用されることが多いようだ

実装

実装 言語 URL 内容 備考
Mosquitto™ C URL ブローカー
クライアント
おそらく一番有名で、リファレンス実装的な感じ。GitHub★3.5K。ちょっと触ってみた
ruby-mqtt ruby URL クライアント 個人的に興味あり
MQTT.js JS URL クライアント PahoのJSよりAPIがモダンだと言われている。GitHub★5.3K
Paho 多い URL クライアント サポートしている言語が多い。Python は GitHub★1.1K
HiveMQ Java URL 名前からしてJavaな商用版っぽいが、GitHub にコミュニティー版がある
Aedes JS URL ブローカー Mosca から Aedes になったみたい

もう少し深く知りたい

サービス

アプリ作っている人たち

シリーズ

  1. 256MBは結構でかいな

20
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
14