Skip to content

パブリッシュ/サブスクライブ

世界トップクラスのMQTTブローカーであるEMQXは、MQTTプロトコルの重要な機能であるパブリッシュ/サブスクライブメッセージングパターンをサポートしています。EMQXのパブリッシュ/サブスクライブ機能は、ワイルドカードトピックのサポート、トピックベースのメッセージフィルタリング、メッセージのパーシステンス、QoS(サービス品質)設定など、複雑かつ高性能なメッセージングアプリケーションに適した多彩な機能を提供します。

パブリッシュ機能は、EMQXブローカーに接続されたデバイスが特定のトピックにメッセージを送信できるようにします。メッセージには、センサーの読み取り値、ステータス更新、コマンドなど、あらゆる種類のデータを含めることができます。デバイスがトピックにメッセージをパブリッシュすると、EMQXはそのメッセージを受信し、そのトピックをサブスクライブしているすべてのデバイスに転送します。

EMQXのサブスクライブ機能は、デバイスが特定のトピックからメッセージを受信できるようにします。デバイスは1つ以上のトピックをサブスクライブでき、サブスクライブしたトピックにパブリッシュされたすべてのメッセージを受信します。これにより、デバイスはリアルタイムで特定のイベントやデータストリームを監視でき、常に更新をポーリングする必要がなくなります。

パブリッシュ/サブスクライブパターン

拡張パブリッシュ/サブスクライブ機能

EMQXはネイティブなMQTTのパブリッシュ/サブスクライブモデルをサポートするだけでなく、高度で非同期なメッセージングシナリオを支援するために、多くの強力な拡張機能も提供しています。

本章では、MQTTコアコンセプトを学び、EMQXのパブリッシュ/サブスクライブ機能を試し、MQTTクライアントツールを使って以下のMQTT固有の機能をテストする方法を紹介します。

EMQXにおけるMQTT拡張

EMQXはネイティブMQTT機能に加え、基本的なパブリッシュ/サブスクライブモデルを拡張・強化する複数の機能を提供しています。これらの機能は、高度なメッセージングパターン、オフライン消費、トピック管理などを扱うために設計されています。

サブスクリプションフィルター(高度機能)

サブスクリプションフィルターは、EMQX 6.2で導入された高度な機能で、MQTT 5.0のパブリッシュ/サブスクライブモデルを拡張し、サブスクリプションレベルでのコンテンツベースフィルタリングを可能にします。トピックフィルターにフィルター式を付加することで、サブスクライバーはMQTT 5.0のユーザープロパティが指定条件を満たすメッセージのみをEMQXに配信させることができます。

これにより、別のトピック階層やパブリッシャーの変更を必要とせず、サーバー側で正確なメッセージルーティングが可能になります。

  • 任意のMQTT 5.0ユーザープロパティのキーと値でフィルタリング
  • 複数条件を論理AND(&)で組み合わせ可能
  • クライアント側のフィルタリングロジック不要の完全サーバーサイド処理

メッセージキュー(高度機能)

メッセージキューは、EMQX 6.0で導入された高度な機能で、MQTTのパブリッシュ/サブスクライブモデルに耐久性と非同期のメッセージキューイング機能を追加します。サブスクライバーがオフラインの場合でもメッセージを保存でき、Last-Value Semanticsによる高度な配信戦略やメッセージ圧縮をサポートします。

共有サブスクリプションや保持メッセージとは異なり、メッセージキューは以下を提供します。

  • クライアント接続状態に依存しない耐久的なメッセージパーシステンス
  • 設定可能なキューのライフサイクルおよびメッセージのTTL(有効期限)
  • キュー単位の配信セマンティクスと細かな制御