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

前提条件

已获取消费组ID,并订阅Topic消息。

准备开发环境

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

下载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的接入信息。
    修改代码
    重要 请确保参数值输入正确,否则AMQP客户端接入会失败。
    参数示例说明
    accessKeyLTAI4GFGQvKuqHJhFa******登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。
    说明 如果使用RAM用户,您需授予该RAM用户管理物联网平台的权限(AliyunIOTFullAccess),否则将连接失败。授权方法请参见授权RAM用户访问物联网平台
    accessSecretiMS8ZhCDdfJbCMeA005sieKe******
    consumerGroupIdVWhGZ2QnP7kxWpeSSjt******消费组ID。

    登录物联网平台控制台,在对应实例的消息转发 > 服务端订阅 > 消费组列表查看您的消费组ID。

    iotInstanceIdiot-***j实例ID。您可在物联网平台控制台实例概览页面,查看当前实例的ID。
    • 若有ID值,必须传入该ID值。
    • 若无实例概览页面或ID值,传入空值,即iotInstanceId = ""
    clientId12345表示客户端ID,需您自定义,长度不可超过64个字符。建议使用您的AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识。

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

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

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

    hostiot-cn-***.amqp.iothub.aliyuncs.comAMQP接入域名。

    ${YourHost}对应的AMQP接入域名信息,请参见查看实例终端节点

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

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

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

      失败

相关文档

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