Skip to content

自動サブスクライブ

注意

自動サブスクライブ機能は、EMQX サーバレスエディションでは利用できません。

自動サブスクライブは、EMQX ブローカーがサポートする拡張された MQTT 機能です。自動サブスクリプション機能を有効にすると、クライアントが接続に成功した際に、あらかじめ定義されたトピックに自動的にサブスクライブされます。これにより、クライアントが明示的に SUBSCRIBE リクエストを送信する必要がなくなり、EMQX ブローカーがサブスクリプション処理を自動で行います。

EMQX 5.0 以前では、この機能は「プロキシサブスクリプション」と呼ばれていました。

コンソールでの自動サブスクライブ設定

  1. EMQX Cloud コンソールでご自身のデプロイメントにアクセスします。左メニューから Monitor -> Auto Subscribe をクリックします。

  2. Auto Subscribe ページで、右上の + Add ボタンをクリックします。

  3. Add Auto Subscription ダイアログで、テスト用トピック a/1Topic テキストボックスに入力します。その他の設定はデフォルトのままにします。

    • Topic:クライアントが自動的にサブスクライブするトピックを入力します。プレースホルダーを使って動的にトピックを構築することも可能です。詳細は プレースホルダー を参照してください。
    • QoS:トピックのサービス品質を指定します。選択肢は 012 です。
    • No localFalse または True を選択します。
    • Retain as Published:指定したトピックで送信されたメッセージを保持するかどうかを指定します。False または True
    • Retained Handling012 のいずれかを選択します。

    add_auto_subscription

    Confirm ボタンをクリックします。自動サブスクライブ用トピック a/1 が正常に作成されます。

これで自動サブスクリプション機能が有効になります。新しいサブスクライバーは、EMQX ブローカーに接続すると自動的にトピック a/1 にサブスクライブされます。

MQTTX を使った自動サブスクライブの試行

トピック a/1 は、プラットフォームコンソールでの自動サブスクライブ設定で自動サブスクライブトピックとして設定されています。以下の手順は、クライアントが EMQX ブローカーに接続すると自動的にトピック a/1 にサブスクライブされる様子を示しています。

  1. MQTTX Web を開きます。

  2. New Connection をクリックして、パブリッシャーとしてクライアント接続を作成します。以下の項目を設定します:

    • NameDemo と入力します。
    • Host:デプロイメントの Overview ページの MQTT Connection Information セクションにあるアドレスを入力します。
    • Port8084 を入力します。
    • UsernamePassword:デプロイメントの Access Control -> Authentication ページで設定した認証情報を入力します。

    その他の設定はデフォルトのままにして、Connect をクリックします。

  3. 別の MQTT クライアント接続を作成し、名前を Subscriber とします。

  4. Connections ペインでクライアント Demo を選択し、トピックに a/1 を入力してメッセージを送信します。

    • クライアント Subscriber は、新たにサブスクリプションを作成しなくても自動的にメッセージを受信します。

    • クライアント Demo も新しい接続のため、同様にメッセージを受信します。

      TIP

      パブリッシュ/サブスクライブパターンでは、クライアントは送信者およびサブスクライバーの両方になり得ます。

  5. EMQX Cloud コンソールに戻り、左メニューから Monitor -> Subscriptions をクリックします。トピック a/1 に対して自動的にサブスクライブされた2つのサブスクリプションが確認できます。

    auto_subscribe_subscriptions

プレースホルダー

自動サブスクライブは、プレースホルダーを使ってトピックを動的に構築することをサポートしています。プレースホルダーの形式は ${} です。サポートされている変数は以下の通りです:

  • ${clientid}:クライアントID
  • ${username}:クライアントのユーザー名
  • ${host}:クライアントが EMQX ブローカーに接続した際のIPアドレス

例えば、クライアントIDが emqx_c で、設定されたトピックが a/${clientid} の場合、クライアントは EMQX ブローカーに接続後、自動的にトピック a/emqx_c にサブスクライブされます。