MQTTの互換性
Pub/SubはMQTT v5.0仕様 ↗のコア部分をサポートしており、MQTT v5.0互換のクライアントはPub/Subブローカーに接続できるはずです。
MQTTは今日展開されている最も広範な「メッセージングプロトコル」の1つです。接続された決済端末から自律走行車、携帯電話、さらにはビデオゲームに至るまで、今日では数千万(少なくとも!)のデバイスがMQTTを使用しています。センサーの読み取り、テレメトリー、金融取引、モバイル通知やメッセージはすべてMQTTの一般的なユースケースであり、プロトコルの柔軟性により、開発者は信頼性、トピック階層、特定のユースケースに応じた永続性に関してトレードオフを行うことができます。
多くの場合、MQTT仕様は、ブローカーがサポートしていない機能を使用しようとする際にクライアントが明示的に切断されることを義務付けています。クライアントがメッセージをブローカーに送信できなくなる切断ループを避けるために、クライアントがサポートされている機能のみを使用するようにしてください。
Pub/Subは以下のMQTTプロトコル機能をサポートしています。
| プロトコル機能 | サポート状況 | 詳細 |
|---|---|---|
| ユーザー名とパスワード認証 | はい | Pub/Subはクライアントの認証にパスワードの代わりに署名されたJSON Webトークンを使用します。 認証の仕組みについての詳細は認証と承認を参照してください。 |
| 相互TLS(TLSクライアント資格情報) | まだサポートされていません | なし |
| 強化された認証 | サポートされていません | Kerberosをサポートするために一般的に使用されます。 |
| 配信:最大1回(QoS 0) | はい(デフォルト) | これはMQTTのデフォルトQoSレベルであり、基本的な配信保証とネットワークレベルの再送信のために基盤となるTCP接続とシステムに依存します。 |
| 配信:少なくとも1回(QoS 1) | まだサポートされていません | クライアントがサポートされていないサービス品質モードでメッセージを送信しようとすると、ブローカーはReason Code 0x9B(QoSがサポートされていない)でDISCONNECTを返します。 |
| 配信:正確に1回(QoS 2) | まだサポートされていません | クライアントがサポートされていないサービス品質モードでメッセージを送信しようとすると、ブローカーはReason Code 0x9B(QoSがサポートされていない)でDISCONNECTを返します。 |
| リテイン | まだサポートされていません | クライアントがリテインビットをゼロ以外の値に設定してメッセージを送信しようとすると、ブローカーはReason Code 0x9A(リテインがサポートされていない)でDISCONNECTを返します。 |
| ウィルメッセージ | まだサポートされていません | ウィルメッセージ(時には「ラストウィル」メッセージと呼ばれる)は現在サポートされておらず、ブローカーによって無視されます。 |
| 受信最大数 | まだサポートされていません | QoS 1およびQoS 2メッセージにのみ適用され、現在はサポートされていません。 |
単一レベルワイルドカード(+文字) | まだサポートされていません | クライアントがワイルドカード(+または#文字)を使用してトピックにサブスクライブしようとすると、ブローカーはReason Code 0x90(トピック名が無効)でDISCONNECTを返します。 |
複数レベルワイルドカード(#文字) | まだサポートされていません | クライアントがワイルドカード(+または#文字)を使用してトピックにサブスクライブしようとすると、ブローカーはReason Code 0x90(トピック名が無効)でDISCONNECTを返します。 |
| 共有サブスクリプション | まだサポートされていません | 文字列$share/で接頭辞が付けられた共有サブスクリプションにSUBSCRIBEしようとするクライアントには、サーバーがReason Code 0x9E(共有サブスクリプションがサポートされていない)でDISCONNECTを返します。 |
| サブスクリプション識別子 | まだサポートされていません | サブスクリプション識別子を持つSUBSCRIBEパケットを送信するクライアントは、Reason Code 0xA1(サブスクリプション識別子がサポートされていない)でDISCONNECTを受け取ります。 |
| ユーザー属性 | まだサポートされていません | PUBLISHパケットに含まれるユーザー属性 ↗は、サブスクライバーに転送されません。 |
ベータ期間中、ユーザーはアカウントに関連付けられた名前空間やブローカーを作成、変更、削除するためにスーパ管理者または管理者の権限が必要です。
将来的には、Pub/Subは以下のブローカー固有のIAM権限を持つ予定です:
- 管理者 - 名前空間の作成、編集、削除;ブローカーの作成、編集、削除
- ユーザー - ブローカーの作成、編集、削除(のみ);名前空間を表示するが、作成または削除はできない
- ビューア - ブローカーを表示。設定を表示できるが、新しい資格情報を発行したり設定を変更したりすることはできない
長期的には、Pub/Subはユーザーがそれらの権限を名前空間ごとにスコープ設定できるようにし、隔離された環境や分散チームをより良くサポートします。