パブリッシュ/サブスクライブ
世界最高峰の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(有効期限)
- キュー単位の配信セマンティクスと細かな制御