20
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MQTTを調べている

Last updated at Posted at 2020-04-12

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

はじめに

MQTTに関しては、ここにMQTT Essentialsという素晴らしいリソースがある。なにはともあれこれを読まないと始まらない。

MQTT

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

プロトコルが軽量だからIoT向けだよ、いうところが強調されがちだが、個人的にMQTTの真の強みは「不安定なネットワークでもメッセージをちゃんと届ける」ところだと思う。そのための仕組みがいろいろある。ブローカーを中心とするアーキテクチャなので、極端な話、ネットワークが不安定でTCPコネクションが切れても、その間メッセージをブローカーに貯めておいて、再接続時に再送するとかできる。コネクティッド・モビリティーとかでつかうとピッタリ。

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

特徴

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

標準化

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

さくっとわかりたい

アプリケーション

センサデータ収集系かチャットアプリ系で使用されることが多いようだ。MQTT標準ではないが、商用のMQTTブローカーはHTTPやWebScoketをサポートするものも多く、デバイスだけでなく、Webやモバイルアプリもブローカーに繋げてアプリケーションを作れるものが多い。

実装

様々な言語での実装がある。中途半端にリストするのはやめて Awesome MQTT へのリンクとしたい。やや更新が滞っている感があるので、Pull requestも見ると良い。

リンク集

サービス

シリーズ

  1. 256MBは結構でかいな

20
15
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
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?