MQTT.fx是一款基于Eclipse Paho、使用Java语言编写的MQTT客户端。支持Windows、Mac和Linux操作系统,可用于验证设备是否可以连接微消息队列MQTT版,并通过Topic发布和订阅消息。本文以Windows系统为例,介绍如何使用MQTT.fx模拟SDK接入微消息队列MQTT版并进行消息收发。

前提条件

下载并安装MQTT.fx v1.7.1

背景信息

微消息队列MQTT版最简单的使用场景即MQTT客户端消息的自发自收。如下图所示,您可以使用MQTT.fx作为MQTT客户端,在MQTT.fx客户端配置相关参数后接入微消息队列MQTT版实现消息的发送和接收。消息收发
微消息队列MQTT版同时提供了公网接入点VPC 接入点
  • 在物联网和移动互联网的场景中,客户端推荐使用公网接入点接入。
  • VPC 接入点仅供一些特殊场景使用。例如涉及部署在云端服务器上的应用场景。
本示例以公网接入点为例接入微消息队列MQTT版

使用流程

使用MQTT.fx收发消息的流程如下图所示。操作流程

(RAM用户必选)步骤一:为RAM用户授权

若您开通消息队服务使用的是账号是RAM用户,必须先为RAM用户进行授权,才能访问微消息队列MQTT版的资源。若您的账号是阿里云账号,默认拥有使用微消息队列MQTT版资源的权限,您可以跳过该步骤。

  1. 登录RAM控制台
  2. 在左侧导航栏选择人员管理 > 用户
  3. 用户页面,找到需要授权的用户,单击RAM用户操作列的添加权限
  4. 添加权限面板单击需要授予RAM用户的权限策略,然后单击确定
微消息队列MQTT版提供以下系统策略,您可以根据权限范围为RAM用户授予相关权限。
权限策略名称 说明
AliyunMQFullAccess 管理微消息队列MQTT版的权限,等同于阿里云账号的权限,被授予该权限的RAM用户具有所有消息收发权限且有控制台所有功能操作权限。
AliyunMQPubOnlyAccess 微消息队列MQTT版的发布权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK发送消息的权限。
AliyunMQSubOnlyAccess 微消息队列MQTT版的订阅权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK订阅消息的权限。
AliyunMQReadOnlyAccess 微消息队列MQTT版的只读权限,被授予该权限的RAM用户仅有通过访问控制台或调用管控API读取资源信息的权限。

步骤二:创建MQTT实例并获取接入点

  1. 登录微消息队列MQTT版控制台
  2. 在左侧导航栏单击实例列表
  3. 在顶部菜单栏选择地域。
  4. 实例列表页面左上角单击创建实例
  5. 在弹出的付费方式面板中,按需选择实例付费方式。
    微消息队列MQTT版支持按量付费包年包月付费模式,两种类型的计费方式请参见计费说明
    • 创建按量付费实例
      1. 付费方式选择按量付费,然后单击确定
      2. 在实例规格面板,按需选择您需要购买的实例规格,单击立即购买按量付费实例
    • 创建包年包月实例
      1. 付费方式选择包年包月,然后确定
      2. 在实例规格面板,按需选择您需要购买的实例规格,单击立即购买购买包年包月
      3. 在订单支付面板,单击订购
    购买成功后,刷新微消息队列MQTT版控制台实例列表页面,可以看到刚才新创建的实例。
  6. 回到微消息队列MQTT版控制台,在左侧导航栏单击实例列表,并将地域切换为您所购买的实例所对应的地域。
  7. 实例列表页面中,单击您所购买实例的名称或在其操作列单击详情,进入实例详情页面。
  8. 实例详情页面单击接入点页签,即可看到实例的接入点信息,本示例以公网接入点为例。

步骤三:创建父级Topic

MQTT协议支持多级Topic,父级Topic需在控制台创建,子级Topic无需创建,使用时直接在代码中设置即可。命名格式为:父级Topic和各子级Topic间均使用正斜线(/)隔开,<父级Topic名称>/<二级Topic名称>/<三级Topic名称>,例如,SendMessage/demo/producer。父级Topic和子级Topic总长度不能超过64个字符。Topic详细信息,请参见名词解释

  1. 登录微消息队列MQTT版控制台
  2. 在左侧导航栏单击实例列表
  3. 在顶部菜单栏选择地域。
  4. 在实例列表中找到目标实例,在其操作列中,选择更多 > Topic 管理
  5. Topic 管理页面左上角,单击创建 Topic
  6. 在创建Topic面板中,输入要创建的Topic名称描述,然后在左下角单击确定
    您可以在Topic 管理页面查看刚创建的Topic。

步骤四:创建Group

Group ID详细信息,请参见名词解释

  1. 登录微消息队列MQTT版控制台
  2. 在左侧导航栏单击实例列表
  3. 在顶部菜单栏选择地域。
  4. 在实例列表中找到目标实例,在其操作列中,选择更多 > Group 管理
  5. Group 管理页面的左上角,单击创建 Group
  6. 在创建Group面板中,输入Group ID,然后在左下角单击确定
    您可以在Group 管理页面查看刚创建的Group。

步骤五:配置MQTT.fx接入微消息队列MQTT版

  1. 打开MQTT.fx客户端,在其顶部菜单栏中选择Extras > Edit Connection profiles
  2. Edit Connection Profiles页面中配置相关参数,然后单击OK
    参数配置
    参数 说明 取值示例
    Profile Name 配置文件名称。 MQTT Test
    Profile Type 配置的连接类型。 固定选择MQTT Broker,表示连接MQTT服务器。
    MQTT Broker Profile Settings
    Broker Address 步骤二中获取的微消息队列MQTT版实例的接入点。 本示例以公网接入点为例。post-cn-st21xgs****.mqtt.aliyuncs.com
    说明 post-cn-st21xgs****为您购买的微消息队列MQTT版实例ID。
    Broker Port 连接微消息队列MQTT版的协议端口。
    • MQTT协议端口:1883
    • SSL端口:8883
    1883
    Client ID 客户端的唯一标识,要求全局唯一。Client ID由两部分组成,组成形式为<GroupID>@@@<DeviceID><GroupID>步骤四中创建的Group ID,<DeviceID>为您自定义的设备ID。Client ID的长度限制为64个字符,不允许使用不可见字符,具体限制,请参见使用限制 GID_MQTT_test@@@111

    本示例中<DeviceID>自定义为111<GroupID>GID_MQTT_test

    User Credentials
    User Name 客户端接入微消息队列MQTT版需要输入用户名和密码完成认证,认证通过后才能进行消息收发。用户名和密码计算方式请参见签名鉴权模式 Signature|LTAI4GBY9J8e7YukuUie****|post-cn-st21xgs****
    Password p3Mxc2PDZet09sHhurTJAg3J****
    SSL/TLS
    Enable SSL/TLS 是否使用SSL或TLS加密协议。 取消选中
    Protocol 协议版本。 TLSv1.2
    说明 其他参数均使用系统默认值,无需设置。您也可以根据实际场景自定义参数值。
  3. 参数配置完成后,单击Connect进行连接。
    • 右侧绿灯亮起,表示MQTT.fx和微消息队列MQTT版已成功连接。
    • 右侧红灯亮起,表示连接失败,你可以单击Log查看日志,根据日志信息修改配置并重新尝试连接。
    连接成功
    您可以在微消息队列MQTT版控制台对应实例下,查看设备状态,预期设备状态为在线设备状态

使用MQTT.fx订阅消息

  1. 在MQTT.fx客户端上方单击Subscribe页签。
  2. Subscribe页签中,在左侧Topic文本框输入步骤三中创建的Topic的名称,然后再单击文本框右侧的Subscribe。本示例以MQTT_test_topic为例。订阅成功后,该Topic会显示在订阅列表中。
    说明 本文以父级Topic为例,若需要订阅子级Topic,直接在Topic文本框中父级Topic名称后加上子级Topic名称即可,父级Topic和各子级Topic间均使用正斜线(/)隔开,例如MQTT_test_topic/subscribe1。Topic详细信息,请参见名词解释
    订阅成功
  3. 微消息队列MQTT版控制台对应实例下,单击Topic 管理,找到订阅的Topic,在其操作列单击快速体验
    快速体验
  4. 快速体验消息收发面板中,选择发送方式控制台并在消息内容文本框中输入要发送的消息内容,例如:hello mqtt,然后单击确定
    发送消息
    回到MQTT.fx客户端,在Subscribe页签中可以查看订阅的Topic接收到的消息。消息内容

使用MQTT.fx发送消息

  1. 在MQTT.fx客户端上方单击Publish页签。
  2. Publish页签中,在左侧Topic文本框输入步骤三中创建的Topic的名称,本示例以MQTT_test_topic为例,然后在下面的消息文本框中输入要发送的消息内容,例如:mqtt send message,然后单击Topic文本框右侧的Publish发送消息。
    发送消息
    单击Subscribe页签,您可以查看到对应订阅的Topic已接收到刚才发送的消息。接收消息

查看消息轨迹

进入微消息队列MQTT版控制台,在消息轨迹查询页面输入Group IDDevice ID然后单击查询消息轨迹
返回3条消息轨迹。从下至上依次为:
  • 第1条:MQTT微消息队列MQTT版控制台发送到MQTT.fx的消息。
  • 第2条:MQTT.fx客户端发送的消息。
  • 第3条:推送至MQTT.fx的消息。第2条和第3条轨迹的Message ID相同,即通过MQTT.fx完成了同一条消息的自收发。

查看日志

在MQTT.fx中,单击Log页签可查看操作日志和错误日志。日志