阿里云物联网平台使用MNS服务端订阅

物联网平台服务端订阅支持将设备消息发送至消息服务(MNS),云端应用通过监听MNS队列,获取设备消息。本章讲解使用MNS订阅设备消息的配置方法。

前提条件

如果使用子账号,子账号需拥有AliyunIOTAccessingMNSRole角色权限。

操作步骤

  1. 在物联网平台控制台上,为产品配置服务端订阅,实现物联网平台将消息自动转发至MNS。
    1. 登录物联网平台控制台。
    2. 在左侧导航栏,选择规则引擎 > 服务端订阅
    3. 服务端订阅页的订阅列表页签下,单击创建订阅
    4. 创建订阅对话框中,选择订阅类型为MNS,并完成其他设置后,单击确认

      iotiot

    5. 在弹出的确认对话框中,单击确定

      物联网平台将自动创建MNS消息队列,名称格式为aliyun-iot-${yourProductKey}。您在配置监听MNS队列时,需配置为该队列。

      MNS会收取费用,具体计费方式,请参见MNS计费。


      说明 如果删除已创建的MNS服务端订阅,对应的MNS队列也会自动删除。

  2. 配置监听MNS队列,以接收设备消息。

    以下示例中,使用MNS Java SDK监听消息。

    下载MNS SDK Demo,请访问MNS文档。

    1. 在pom.xml文件中,添加如下依赖安装MNS Java SDK。
      <dependency>
          <groupId>com.aliyun.mns</groupId>
          <artifactId>aliyun-sdk-mns</artifactId>
          <version>1.1.8</version>
          <classifier>jar-with-dependencies</classifier>
      </dependency>
    2. 配置接收消息时,需填入以下信息。
      CloudAccount account = new CloudAccount( $AccessKeyId, $AccessKeySecret, $AccountEndpoint);
      • $AccessKeyId$AccessKeySecret需替换为您的阿里云账号访问API的基本信息。登录阿里云控制台,光标移至阿里云账号头像上,然后单击AccessKey管理,创建或查看AccessKey信息。
      • $AccountEndpoint需填写实际的Endpoint值。在MNS控制台,单击获取Endpoint获取。
    3. 填写接收设备消息的逻辑。
      MNSClient client = account.getMNSClient(); 
      CloudQueue queue = client.getQueueRef("aliyun-iot-a1xxxxxx8o9"); //请输入IoT自动创建的队列名称
      
          while (true) { 
          // 获取消息 
          Message popMsg = queue.popMessage(10); //长轮询等待时间为10秒      
          if (popMsg != null) { 
              System.out.println("PopMessage Body: "+ popMsg.getMessageBodyAsRawString()); //获取原始消息 
              queue.deleteMessage(popMsg.getReceiptHandle()); //从队列中删除消息 
          } else { 
              System.out.println("Continuing"); } }
      							
    4. 运行程序,完成对MNS队列的监听。
  3. 启动设备,上报消息。

    设备端SDK开发,请参见Link Kit SDK文档。

  4. 检查云端应用是否监听到设备消息。若成功监听,将获得如下所示消息代码。
    {
    "messageid":" ",//消息标识
    "messagetype":"upload",
    "topic":"//信息来源Topic,
    "payload": //Base64编码后的数据
    "timestamp": //时间戳
    }
    参数 说明
    messageid 物联网平台生成的消息ID。
    messagetype 消息类型。

    • status:设备状态通知
    • upload:设备上报消息
    • device_lifecycle:设备生命周期变更通知
    • topo_lifecycle:设备拓扑关系变更
    • topo_listfound:网关发现子设备上报
    topic 服务端监听到的信息来源的物联网平台Topic。
    payload Base64编码的消息数据。

    payload数据格式,请参见数据格式。

    timestamp 时间戳,以Epoch时间表示。

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/33358.html

发表评论

登录后才能评论