Auto Subscribe
Auto Subscribeは、EMQXがサポートする拡張されたMQTT機能です。Auto Subscriptionを有効にすると、ユーザーは複数のEMQXルールを設定できます。クライアントがEMQXに正常に接続されると、EMQXはクライアントのサブスクライブ処理を自動的に完了し、クライアントはもはや SUBSCRIBE リクエストを送信する必要がなくなります。
EMQX 5.0以前では、この機能はProxy Subscriptionと呼ばれていました。
DashboardでAuto Subscribeを設定する
EMQXダッシュボードを開きます。左側のナビゲーションメニューで、Management -> Auto Subscribe をクリックします。
Auto Subscribeページで、右上の**+ Add**ボタンをクリックします。
ポップアップダイアログボックスで、Topicテキストボックスにテスト用トピック
a/1を入力します。他の設定はデフォルトのままにします。Topic: クライアントが自動的にサブスクライブするトピックを入力します。プレースホルダーを使って動的にトピックを構築することも可能です。詳細はプレースホルダーをご参照ください。
QoS: トピックのサービス品質を指定します。選択肢は
0、1、2です。No local: 選択肢は
FalseまたはTrueです。Retain as Published: 指定したトピックで送信されたメッセージを保持するかどうかを指定します。選択肢は
FalseまたはTrueです。Retained Handling: 選択肢は
0、1、2です。
ダイアログボックスのAddボタンをクリックします。これで自動サブスクライブトピック
a/1が正常に作成されます。
これでAuto Subscription機能が有効になりました。新しいサブスクライバーは、ブローカーに接続されると自動的にトピック a/1 をサブスクライブします。
MQTTX DesktopでAuto Subscriptionを試す
DashboardでAuto Subscribeを設定するでトピック a/1 が自動サブスクライブトピックとして設定されています。以下の手順では、クライアントがブローカーに接続されると自動的にトピック a/1 をサブスクライブする様子を示します。
前提条件
MQTTX Desktopを使った基本的なパブリッシュおよびサブスクライブ操作の理解。
EMQXとMQTTX Desktopを起動します。New Connectionをクリックして、パブリッシャーとしてクライアント接続を作成します。
- Nameフィールドに
Demoと入力します。 - Hostにローカルホストの
127.0.0.1を入力します(このデモの例として使用)。 - 他の設定はデフォルトのままにしてConnectをクリックします。
TIP
MQTT接続の作成に関するより詳細な手順はMQTTX Desktopをご覧ください。

- Nameフィールドに
もう一つのMQTTクライアント接続を
Subscriberという名前で作成します。Connectionsペインでクライアント
Demoを選択し、トピックにa/1を入力してこのトピックにメッセージを送信します。クライアント
Subscriberは新たにサブスクライブを作成しなくても自動的にメッセージを受信します。クライアント
Demoも新しい接続としてメッセージを受信します。TIP
パブリッシュ/サブスクライブパターンでは、クライアントは送信者とサブスクライバーの両方になり得ます。
EMQXダッシュボードに戻り、左側のナビゲーションメニューからMonitoring -> Subscriptionsをクリックします。トピック
a/1に自動サブスクライブされた2つのサブスクリプションが表示されます。
MQTTX CLIでAuto Subscriptionを試す
前提条件
MQTTX CLIを使った基本的なパブリッシュおよびサブスクライブ操作の理解。
クライアントIDを
emqx_cとして新しい接続を作成します。bashmqttx conn -i emqx_cEMQXダッシュボードに移動し、左側のナビゲーションメニューからMonitoring -> Subscriptionsをクリックします。クライアント
emqx_cがトピックa/1をサブスクライブしていることが表示されます。
プレースホルダー
Auto Subscribeはプレースホルダーをサポートしており、トピックを動的に構築できます。プレースホルダーの形式は ${} です。サポートされている変数は以下の通りです。
${clientid}: クライアントID${username}: クライアントのユーザー名${host}: クライアントがEMQXに接続した際のIPアドレス
例えば、クライアントIDが emqx_c で設定されたトピックが a/${clientid} の場合、クライアントはEMQXに接続後、自動的にトピック a/emqx_c をサブスクライブします。