服务端订阅设备消息

设备连接物联网平台后,数据直接上报至物联网平台,平台上的数据可以通过AMQP通道流转至您的服务器。本文为您介绍通过配置AMQP服务端订阅,实现企业服务器通过接入AMQP客户端,接收路灯设备数据的完整流程。

背景信息

通过AMQP服务端订阅获取设备消息流程如下图所示。详细说明,请参见配置AMQP服务端订阅AMQP客户端接入说明AMQP

操作步骤

  1. 登录物联网平台控制台

  2. 实例概览页签,单击公共实例

  3. 为消息消费端配置消费组身份,用于企业服务器通过消费组获取转发的消息。

    1. 在左侧导航栏选择消息转发 > 服务端订阅,单击消费组列表页签。

    2. 单击创建消费组

    3. 创建消费组对话框中,设置消费组名称为路灯消费组,单击确认

  4. 为路灯设备所属产品配置服务端订阅,用于您的服务器直接订阅产品下多种类型的消息 。

    1. 在左侧导航栏选择消息转发 > 服务端订阅

    2. 服务端订阅页面的订阅列表页签下,单击创建订阅

    3. 创建订阅对话框,设置参数后单击确认

      参数

      说明

      产品

      选择路灯

      订阅类型

      选择AMQP

      消费组

      选择上一步创建的路灯消费组

      推送消息类型

      选择设备上报消息

  5. AMQP客户端接入物联网平台。

    示例使用Java开发语言,推荐使用Apache Qpid JMS客户端,实现AMQP客户端的接入。您可访问Qpid JMS 0.57.0,查看Qpid JMS客户端使用说明。

    示例使用的开发环境如下:

    使用示例代码,实现AMQP客户端接入的具体操作如下:

    1. 下载Demo代码包,并解压。

    2. 打开IntelliJ IDEA,导入Demo包中的示例工程amqp-demo,使用Maven构建工程。

    3. src/main/java/com.aliyun.iotx.demo目录下AmqpClient.java文件中,参照下表,修改JMS客户端接入物联网平台代码中的参数值。

      参数

      示例

      说明

      accessKey

      LTAI4GFGQvKuqHJhFa******

      登录物联网平台控制台,移动鼠标指针至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。

      说明

      如果使用RAM用户,您需授予该用户管理物联网平台的权限(AliyunIOTFullAccess),否则会连接失败。授权方法请参见授权RAM用户访问物联网平台

      accessSecret

      iMS8ZhCDdfJbCMeA005sieKe******

      consumerGroupId

      VWhGZ2QnP7kxWpeSSjt******

      步骤3中创建的路灯消费组ID。请在物联网平台控制台公共实例页面,选择消息转发 > 服务端订阅,单击消费组列表页签,找到路灯消费组获取消费组ID。

      iotInstanceId

      • 新版公共实例的示例:iot-w3***

      • 旧版公共实例的示例:""

      实例ID。

      • 新版公共实例:在实例概览页面的公共实例下,查看ID值。

      • 旧版公共实例:没有实例ID,传入空值。

      实例的更多详细说明,请参见实例概述

      clientId

      12345

      表示客户端ID,需您自定义,长度不可超过64个字符。建议使用您的AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识。

      AMQP客户端接入并启动成功后,登录物联网平台控制台,在对应实例的消息转发 > 服务端订阅 > 消费组列表页签,单击消费组对应的查看消费组详情页面将显示该参数,方便您识别区分不同的客户端。

      connectionCount

      4

      启动AMQP客户端的连接数,最大不超过128个。用于实时消息推送的扩容。

      消费组详情页面会以${clientId}+"-"+数字形式,显示连接的客户端。其中数字最小值为0。

      host

      • 新版公共实例的示例:iot-***.amqp.iothub.aliyuncs.com

      • 旧版公共实例的示例:198426864******.iot-amqp.cn-shanghai.aliyuncs.com

      AMQP接入域名。

      • 对于Java、.NET、Python2.7、Node.js、Go客户端:端口号为5671。

      • 对于Python3、PHP客户端:端口号为61614。

      详细说明,请参见查看和配置实例终端节点信息(Endpoint)

    4. 运行示例代码后,返回类似如下日志信息,表示AMQP客户端已接入物联网平台并成功接收消息。

      说明

      本示例Demo代码中,添加了结束程序的代码(Thread.sleep(60 * 1000);),即程序启动成功,运行一分钟后会结束。实际场景中,您可根据需要自行设置运行时间。

      运行结果