パブリッシュ/サブスクライブ
世界クラスのMQTTブローカーであるEMQXは、MQTTプロトコルの重要な機能であるパブリッシュ/サブスクライブメッセージングパターンをサポートしています。EMQXのパブリッシュ/サブスクライブ機能は、ワイルドカードトピックのサポート、トピックベースのメッセージフィルタリング、メッセージのパーシステンス、QoS(サービス品質)設定など、複雑かつ高性能なメッセージングアプリケーションに適した多彩な機能を提供します。
パブリッシュ機能は、EMQXブローカーに接続されたデバイスが特定のトピックにメッセージを送信できるようにします。メッセージにはセンサーの読み取り値、ステータス更新、コマンドなど、あらゆる種類のデータを含めることが可能です。デバイスがトピックにメッセージをパブリッシュすると、EMQXはそのメッセージを受信し、そのトピックをサブスクライブしているすべてのデバイスに転送します。
EMQXのサブスクライブ機能は、デバイスが特定のトピックからメッセージを受信できるようにします。デバイスは1つまたは複数のトピックをサブスクライブでき、サブスクライブしたトピックでパブリッシュされたすべてのメッセージを受け取ります。これにより、デバイスはリアルタイムで特定のイベントやデータストリームを監視でき、継続的に更新をポーリングする必要がなくなります。

拡張パブリッシュ/サブスクライブ機能
EMQXはネイティブなMQTTのパブリッシュ/サブスクライブモデルをサポートするだけでなく、より高度で非同期のメッセージングシナリオを支援するために多くの強力な機能を拡張しています。
本章では、MQTTコアコンセプトを学び、EMQXのパブリッシュ/サブスクライブ機能を試し、MQTTクライアントツールを使って以下のMQTT固有の機能をテストする方法を紹介します。
EMQXにおけるMQTT拡張機能
ネイティブなMQTT機能に加え、EMQXは基本的なパブリッシュ/サブスクライブモデルを拡張・強化する複数の機能を提供しています。これらは高度なメッセージングパターン、オフライン消費、トピック管理などを扱うために設計されています。
サブスクリプションフィルター(高度機能)
サブスクリプションフィルターは、EMQX 6.2で導入された高度な機能で、MQTT 5.0のパブリッシュ/サブスクライブモデルを拡張し、サブスクリプションレベルでのコンテンツベースフィルタリングを可能にします。トピックフィルターにフィルター式を付加することで、サブスクライバーはMQTT 5.0のユーザープロパティが指定条件を満たすメッセージのみをEMQXに配信させることができます。
これにより、別のトピック階層を用意したりパブリッシャーを変更したりすることなく、正確なサーバー側メッセージルーティングが実現します。
- 任意のMQTT 5.0ユーザープロパティのキー・バリューでフィルタリング可能
- 複数条件を論理AND(
&)で組み合わせ可能 - クライアント側のフィルタリングロジック不要で完全にサーバー側で処理
メッセージキュー(高度機能)
メッセージキューは、EMQX 6.0で導入された高度な機能で、MQTTのパブリッシュ/サブスクライブモデルに耐久性と非同期メッセージキューイング機能を拡張します。サブスクライバーがオフラインの場合でもメッセージを保存でき、高度な配信戦略やLast-Value Semanticsによるメッセージ圧縮をサポートします。
共有サブスクリプションや保持メッセージとは異なり、メッセージキューは以下を提供します。
- クライアント接続状態に依存しない耐久性のあるメッセージパーシステンス
- キューのライフサイクルおよびメッセージのTTL(有効期限)を設定可能
- キュー単位の配信セマンティクスと細かな制御