MQTT Will Message
EMQXはMQTTのwill message機能を実装しています。クライアントにwill messageが設定されている場合、クライアントが予期せず切断されると、EMQXは関連するサブスクライバーにそのメッセージを送信し、サブスクライバーがクライアントの状態を把握・更新できるようにします。
EMQXでこのメッセージングサービスを試すには、クライアントツールを使用できます。本節では、MQTTX DesktopとMQTTX CLIを使ってクライアントをシミュレートし、will messageがどのようにパブリッシュされ受信されるかを紹介します。
前提条件
- MQTTのWill Messageに関する知識
- MQTTXを使った基本的なパブリッシュおよびサブスクライブ操作
MQTTX DesktopでWill Messageをパブリッシュする
EMQXとMQTTX Desktopを起動します。New Connectionをクリックして、パブリッシャーとしてクライアント接続を作成します。
- Name欄に
Demo
と入力します。 - Hostにlocalhostの
127.0.0.1
を入力します(本デモの例として)。 - 他の設定はデフォルトのままにして、Connectをクリックします。
TIP
MQTT接続の作成に関する詳細な手順はMQTTX Desktopで紹介しています。
ページをスクロールダウンし、Last Will and Testamentセクションでwill messageの設定を入力します。
- Last-Will Topic:
offline
と入力します。 - Last-Will QoS:デフォルトの
0
に設定します。 - Last-Will Retain:デフォルトで無効のままにします。有効にするとwill messageもリテインドメッセージになります。
- Last-Will Payload:
I'm offline
と入力します。 - Will Delay Intervals (s):
5
秒に設定します。
他の設定はデフォルトのままにして、Connectボタンをクリックします。
- Name欄に
Connectionsペインで**+** -> New Connectionをクリックし、新しいクライアント接続を作成します。接続のNameを
Subscriber
、Hostを127.0.0.1
に設定します。他はデフォルトのままにしてConnectをクリックします。SubscriberペインでNew Subscriptionをクリックします。Topicテキストボックスに
offline
と入力し、他の設定はデフォルトのままにしてConfirmをクリックします。Connectionsペインで
Demo
という名前のクライアント接続を選択し、右クリックしてNew Windowを選びます。新しいウィンドウでConnectボタンをクリックします。新しいウィンドウを閉じて5秒待ちます。
Subscriber
クライアントがwill messageのI'm offline
を受信します。
MQTTX CLIでWill Messageをパブリッシュする
1つのクライアントで接続要求を開始します。トピックを
t/1
、ペイロードをA will message from MQTTX CLI
に設定します:bash$ mqttx conn -h 'localhost' -p 1883 --will-topic 't/1' --will-message 'A will message from MQTTX CLI' Connected
別のクライアントでトピック
t/1
をサブスクライブし、will messageを受信できるようにします:bashmqttx sub -t 't/1' -h 'localhost' -p 1883 -v
ステップ1で指定したクライアントを切断すると、ステップ2で指定したクライアントがwill messageを受信します:
bashtopic: t/1 payload: A will message from MQTTX CLI