本文介绍使用AMQP协议的JMS客户端接入阿里云物联网平台,接收服务端订阅消息的示例。

前提条件

已获取消费组ID。您可使用物联网平台默认消费组(DEFAULT_GROUP)或创建消费组。具体操作,请参见管理消费组

准备开发环境

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

下载Apache Qpid JMS客户端

您可访问Qpid JMS 0.57.0,查看Qpid JMS使用说明。

本文示例中,通过在Maven工程中添加如下依赖,下载Qpid JMS客户端。

<!-- amqp 1.0 qpid client -->
 <dependency>
   <groupId>org.apache.qpid</groupId>
   <artifactId>qpid-jms-client</artifactId>
   <version>0.57.0</version>
 </dependency>
 <!-- util for base64-->
 <dependency>
   <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.10</version>
</dependency>

示例Demo

  1. 下载Demo代码包,并解压。
  2. 打开IntelliJ IDEA,导入Demo包中的示例工程amqp-demo
  3. src/main/java/com.aliyun.iotx.demo目录下AmqpClient.java文件中,参照下表,修改AMQP的接入信息。
    修改代码
    参数 示例 说明
    accessKey LTAI4GFGQvKuqHJhFa****** 登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。
    说明 如果使用RAM用户,您需授予该RAM用户管理物联网平台的权限(AliyunIOTFullAccess),否则将连接失败。授权方法请参见授权RAM用户访问物联网平台
    accessSecret iMS8ZhCDdfJbCMeA005sieKe******
    consumerGroupId VWhGZ2QnP7kxWpeSSjt****** 消费组ID。

    登录物联网平台控制台,在规则引擎 > 服务端订阅 > 消费组列表查看您的消费组ID。

    iotInstanceId "" 实例ID。传入空值,即iotInstanceId = ""
    clientId 12345 表示客户端ID,建议使用您的AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识。长度不可超过64个字符。

    登录物联网平台控制台,在规则引擎 > 服务端订阅 > 消费组列表,单击消费组对应的查看消费组详情页将显示该参数,方便您识别区分不同的客户端。

    host 198426864******.iot-amqp.cn-shanghai.aliyuncs.com AMQP接入域名。

    ${YourHost}格式为${uid}.iot-amqp.${YourRegionId}.aliyuncs.com,其中:

    • ${uid}:您的阿里云账号ID。可登录物联网平台控制台,将鼠标指针移动到账号头像,查看账号ID
    • ${YourRegionId}:请替换为您的物联网平台设备所在地域代码。地域代码表达方法,请参见地域和可用区

    更多参数说明,请参见AMQP客户端接入说明

  4. 运行AmqpClient.java程序。
    • 成功:返回类似如下日志信息,表示AMQP客户端已接入物联网平台并成功接收消息。成功
      参数 示例 说明
      topic /***********/******/thing/event/property/post 设备属性上报的Topic。
      messageId 1324198300680719360 消息的ID。
      content {"temperature":23,"humidity":21,"time":1604548451951} 消息的内容。
    • 失败:返回类似如下日志信息,表示AMQP客户端连接物联网平台失败。

      您可根据日志提示,检查代码或网络环境,然后修正问题,重新运行代码。

      失败