# 使用MQTT.fx进行消息收发
#### 概述
MQTT.fx是一款基于Eclipse Paho、使用Java语言编写的MQTT客户端。支持Windows、Mac和Linux操作系统，可用于模拟设备通过MQTTS/MQTT协议连接华为云IoTDA并通过Topic发布和订阅消息。本文以Windows系统为例，介绍如何使用MQTT.fx接入华为云IoTDA并进行消息收发。
图1MQTT.fx与IoTDA的消息交互流程   
![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000001989600912.png "点击放大")
#### 前提条件
- 已注册华为云官方账号。未注册可单击[注册页面](https://reg.huaweicloud.com/registerui/public/custom/register.html#/register)完成注册。

- 已完成[实名认证](https://account.huaweicloud.com/usercenter/#/accountindex/realNameAuth)。
- 已开通设备接入服务。操作可参考[开通服务](https://support.huaweicloud.com/qs-iothub/iot_05_0008.html)。
- 已创建产品和设备。操作可参考[注册设备](https://support.huaweicloud.com/qs-iothub/iot_05_0009.html)。
 
#### 配置MQTT.fx接入IoTDA
1. 下载[MQTT.fx](https://iotda-document.obs.cn-north-4.myhuaweicloud.com/mqttfx-1.7.1-windows-x64.exe)（默认是64位操作系统，如果是32位操作系统，单击此处下载[MQTT.fx](https://iotda-document.obs.cn-north-4.myhuaweicloud.com/mqttfx-1.7.1-windows.exe)），安装MQTT.fx工具。
2. 打开MQTT.fx客户端，在其顶部菜单栏中选择"Extras \> Edit Connection Profiles"。
3. 在Edit Connection Profiles页面中配置相关参数，然后单击"OK"。
   图2MQTT.fx连接参数配置   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000002586202351.png "点击放大")
   
   | 参数名称                  | 参数说明                                                                                                                                                                                 | 取值示例                                                                                                                                  |
   |:---|:---|:---|
   | Profile Name       | 配置文件名称。                                                                                                                                                                               | MQTT Test                                                                                                                             |
   | Profile Type        | 配置的连接类型。                                                                                                                                                                             | 固定选择"MQTT Broker"，表示连接MQTT服务器。                                                                                                        |
   | Broker Address      | MQTT服务器接入地址。                                                                                                                                                                        | 华为云IoTDA的MQTTS协议接入地址，请参考[此处](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html)，进入您的实例，获取"总览"-\>"接入信息"-\>"MQTTS"协议对应的接入地址。 |
   | Broker Port        | MQTT服务器接入端口。                                                                                                                                                                          | 8883                                                                                                                                   |
   | Client ID          | 设备接入华为云IoTDA需要完成设备接入认证，认证通过后才能进行消息收发。设备鉴权参数计算方式请参见 [MQTT设备连接鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_3009.html)。 | 进入设备详情页面，找到"MQTT连接参数"，单击"查看"，查看其中的clientId、username和password。                                                                        |
   | User Name           | 设备接入华为云IoTDA需要完成设备接入认证，认证通过后才能进行消息收发。设备鉴权参数计算方式请参见 [MQTT设备连接鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_3009.html)。 | 进入设备详情页面，找到"MQTT连接参数"，单击"查看"，查看其中的clientId、username和password。                                                                        |
   | Password              | 设备接入华为云IoTDA需要完成设备接入认证，认证通过后才能进行消息收发。设备鉴权参数计算方式请参见 [MQTT设备连接鉴权](https://support.huaweicloud.com/api-iothub/iot_06_v5_3009.html)。 | 进入设备详情页面，找到"MQTT连接参数"，单击"查看"，查看其中的clientId、username和password。                                                                        |
   | SSL/TLS                                                                                                                                                                                                                                                                                                                                                                                                                                       |||
   | Enable SSL/TLS       | 是否使用SSL或TLS加密协议。                                                                                                                                                                    | 是                                                                                                                                     |
   | Protocol           | 协议版本。                                                                                                                                                                                | TLSv1.2                                                                                                                              |
   | CA certificate file | CA证书文件                                                                                                                                                                               | 从[证书资源](https://support.huaweicloud.com/devg-iothub/iot_02_1004.html#section3)页面获取对应区域的CA证书。                                           |
      
   
4. 参数配置完成后，单击"Connect"进行连接。右侧绿灯亮起，表示MQTT.fx和华为云IoTDA已成功连接。右侧红灯亮起，表示连接失败，您可以单击"Log"查看日志，根据日志信息修改配置并重新尝试连接。
   图3MQTT.fx连接   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000002026178629.png "点击放大") 

5. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
6. 在左侧导航栏选择"设备\>所有设备"，查看设备状态，预期设备状态为在线。
   图4设备列表-设备在线   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000001950367902.png "点击放大") 
 
#### 使用MQTT.fx发送消息
1. 在MQTT.fx客户端上方单击"Publish"页签。
2. 在"Publish"页签左侧Topic文本框输入Topic的名称，本示例以"/test/deviceToCloud"为例，消息文本框中输入要发送的消息内容，例如："hello"，单击右侧的"Publish"发送消息。
   图5MQTT.fx发送消息   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000002029799625.png "点击放大") 
3. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
4. 在左侧导航栏选择"设备\>所有设备"，进入设备页面后单击"详情"，在设备详情的消息跟踪页面可以查看MQTT.fx发送的消息。
   图6消息跟踪-查看消息跟踪   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000001981577917.png "点击放大") 

5. MQTT.fx将消息发送到平台后，可以通过配置[数据转发](https://support.huaweicloud.com/usermanual-iothub/iot_01_0024.html)，将MQTT.fx上报的消息平滑流转至消息中间件、存储、数据分析或业务应用。
 
#### 使用MQTT.fx接收消息
1. 在MQTT.fx客户端上方单击"Subscribe"页签。
2. 在Subscribe页签中，在左侧Topic文本框输入Topic的名称后，单击文本框右侧的"Subscribe"。本示例以"/test/cloudToDevice"为例。订阅成功后，该Topic会显示在订阅列表中。
   图7MQTT.fx订阅Topic   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000001993161290.png "点击放大") 
3. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
4. 选择左侧导航栏的"设备 \> 所有设备"，在设备列表中，单击具体的设备进入到设备的详情页面。
5. 在"云端下发\>消息下发"标签页，单击"下发消息"，在弹出的窗口中选择需要下发的消息并设置消息参数。
   图8下发消息-自定义topic   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000002054630781.png "点击放大") 
6. 在MQTT.fx客户端上方单击"Subscribe"页签，可以查看到对应订阅的Topic已接收到发送的消息。
   图9MQTT.fx查看消息   
   ![](https://support.huaweicloud.com/qs-iothub/figure/zh-cn_image_0000001993161510.png "点击放大") 
 
