本文介绍使用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
    pom.xml文件中,已添加Maven依赖,下载Qpid JMS客户端。
  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 iot-***7xj 实例ID。获取ID方法,请参见如何获取实例ID?

    您可登录物联网平台控制台,找到对应的实例,单击实例,进入实例详情页面查看实例ID。

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

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

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

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

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

    ${YourHost}详细说明,请参见查看实例终端节点

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

  4. 运行AmqpClient.java程序。
    说明 本示例Demo代码中,添加了结束程序的代码(Thread.sleep(60 * 1000);),即程序启动成功,运行一分钟后会结束。实际场景中,您可根据需要自行设置运行时间。
    • 成功:返回类似如下日志信息,表示AMQP客户端已接入物联网平台并成功接收消息。成功
      参数 示例 说明
      topic /***********/******/thing/event/property/post 设备属性上报的Topic。
      messageId 1324198300680719360 消息的ID。
      content {"temperature":23,"humidity":21,"time":1604548451951} 消息的内容。
    • 失败:返回类似如下日志信息,表示AMQP客户端连接物联网平台失败。

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

      失败

相关文档

服务端订阅消息相关错误码,请参见消息相关错误码