EMQX implements the will message feature of MQTT. If a will message is set for a client, EMQX sends the message to relevant subscribers when the client is accidentally disconnected, so that the subscribers can be informed and update the client status.
You can use client tools to try this messaging service in EMQX. This section introduces how to use the MQTTX Desktop and MQTTX CLI to simulate clients and see how a will message is published and received.
Publish Will Message with MQTTX Desktop
Start EMQX and MQTTX Desktop. Click the New Connection to create a client connection as a publisher.
Demoin the Name field.
- Enter the localhost
127.0.0.1in Host to use as an example in this demonstration.
- Leave other settings as default and click Connect.
More detailed instructions on creating an MQTT connection are introduced in MQTTX Desktop.
Scroll down the page and in Last Will and Testament section, fill in the will message configuration.
- Last-Will Topic: Enter
- Last-Will QoS: Set as the default value
- Last-Will Retain: Set disabled as default. If enabled, the will message will also be a retained message.
- Last-Will Payload: Enter
- Will Delay Intervals (s): Set
Leave the rest settings as default. Click the Connect button.
In the Connections pane, click + -> New Connection to create a new client connection. Set the connection Name as
Subscriberand Host as
127.0.0.1. Leave other settings as default and click Connect.
Click New Subscription in the Subscriber pane. Enter
offlinein the Topic textbox. Leave the other settings as default. Click the Confirm button.
Select the client connection named
Demoin the Connections pane. Right-click and select New Window. In the new window, click the Connect button.
Close the new window and wait for 5 seconds. The client
Subscriberreceives a will message
Publish Will Message with MQTTX CLI
Initiate a connection request with one client. Set the topic to
t/1and payload to
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
Subscribe to topic
t/1with another client for receiving the will messages:bash
mqttx sub -t 't/1' -h 'localhost' -p 1883 -v
Disconnect the client specified in step 1, then the client specified in step 2 will receive the will message:bash
topic: t/1 payload: A will message from MQTTX CLI