Skip to content

MQTT Will Message

EMQXはMQTTのwill message機能を実装しています。クライアントにwill messageが設定されている場合、クライアントが予期せず切断されると、EMQXは関連するサブスクライバーにそのメッセージを送信し、サブスクライバーがクライアントの状態を把握・更新できるようにします。

EMQXでこのメッセージングサービスを試すには、クライアントツールを使用できます。本節では、MQTTX DesktopMQTTX CLIを使ってクライアントをシミュレートし、will messageがどのようにパブリッシュされ受信されるかを紹介します。

前提条件

  • MQTTのWill Messageに関する知識
  • MQTTXを使った基本的なパブリッシュおよびサブスクライブ操作

MQTTX DesktopでWill Messageをパブリッシュする

  1. 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 Topicofflineと入力します。
    • Last-Will QoS:デフォルトの0に設定します。
    • Last-Will Retain:デフォルトで無効のままにします。有効にするとwill messageもリテインドメッセージになります。
    • Last-Will PayloadI'm offlineと入力します。
    • Will Delay Intervals (s)5秒に設定します。

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

    will messageの設定
  2. Connectionsペインで**+** -> New Connectionをクリックし、新しいクライアント接続を作成します。接続のNameSubscriberHost127.0.0.1に設定します。他はデフォルトのままにしてConnectをクリックします。

  3. SubscriberペインでNew Subscriptionをクリックします。Topicテキストボックスにofflineと入力し、他の設定はデフォルトのままにしてConfirmをクリックします。

    will messageのサブスクライブ
  4. ConnectionsペインでDemoという名前のクライアント接続を選択し、右クリックしてNew Windowを選びます。新しいウィンドウでConnectボタンをクリックします。

    新しいウィンドウを開く
  5. 新しいウィンドウを閉じて5秒待ちます。Subscriberクライアントがwill messageのI'm offlineを受信します。

    will messageの受信

MQTTX CLIでWill Messageをパブリッシュする

  1. 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
  2. 別のクライアントでトピックt/1をサブスクライブし、will messageを受信できるようにします:

    bash
    mqttx sub -t 't/1' -h 'localhost' -p 1883 -v
  3. ステップ1で指定したクライアントを切断すると、ステップ2で指定したクライアントがwill messageを受信します:

    bash
    topic:  t/1
    payload:  A will message from MQTTX CLI