本文介绍使用AMQP协议的JMS客户端接入阿里云物联网平台,接收服务端订阅消息的示例。
前提条件
已获取消费组ID,并订阅Topic消息。
- 管理消费组:您可使用物联网平台默认消费组(DEFAULT_GROUP)或创建消费组。
- 配置AMQP服务端订阅:您可通过消费组订阅需要的Topic消息。
准备开发环境
示例使用的开发环境如下:
- 操作系统:Windows10
- JDK版本:JDK8
- 集成开发环境:IntelliJ IDEA社区版
下载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
- 下载Demo代码包,并解压。
- 打开IntelliJ IDEA,导入Demo包中的示例工程amqp-demo。在pom.xml文件中,已添加Maven依赖,下载Qpid JMS客户端。
- 在src/main/java/com.aliyun.iotx.demo目录下AmqpClient.java文件中,参照下表,修改AMQP的接入信息。重要 请确保参数值输入正确,否则AMQP客户端接入会失败。
参数 示例 说明 accessKey LTAI4GFGQvKuqHJhFa****** 登录物联网平台控制台,将鼠标移至账号头像上,然后单击AccessKey管理,获取AccessKey ID和AccessKey Secret。 说明 如果使用RAM用户,您需授予该RAM用户管理物联网平台的权限(AliyunIOTFullAccess),否则将连接失败。授权方法请参见授权RAM用户访问物联网平台。accessSecret iMS8ZhCDdfJbCMeA005sieKe****** consumerGroupId VWhGZ2QnP7kxWpeSSjt****** 消费组ID。 登录物联网平台控制台,在对应实例的 查看您的消费组ID。
iotInstanceId iot-***j 实例ID。您可在物联网平台控制台的实例概览页面,查看当前实例的ID。 - 若有ID值,必须传入该ID值。
- 若无实例概览页面或ID值,传入空值,即
iotInstanceId = ""
。
clientId 12345 表示客户端ID,需您自定义,长度不可超过64个字符。建议使用您的AMQP客户端所在服务器UUID、MAC地址、IP等唯一标识。 AMQP客户端接入并启动成功后,登录物联网平台控制台,在对应实例的 页签,单击消费组对应的查看,消费组详情页面将显示该参数,方便您识别区分不同的客户端。
connectionCount 4 启动AMQP客户端的连接数,最大不超过64个。用于实时消息推送的扩容。 消费组详情页面会以
${clientId}+"-"+数字
形式,显示连接的客户端。其中数字最小值为0。host iot-cn-***.amqp.iothub.aliyuncs.com AMQP接入域名。 ${YourHost}
对应的AMQP接入域名信息,请参见查看实例终端节点。更多参数说明,请参见AMQP客户端接入说明。
- 运行AmqpClient.java程序。说明 本示例Demo代码中,添加了结束程序的代码(
Thread.sleep(60 * 1000);
),即程序启动成功,运行一分钟后会结束。实际场景中,您可根据需要自行设置运行时间。- 成功:返回类似如下日志信息,表示AMQP客户端已接入物联网平台并成功接收消息。
参数 示例 说明 topic /***********/******/thing/event/property/post 设备属性上报的Topic。 messageId 2**************7 消息的ID。 content {"temperature":29,"humidity":29,"time":1617357297270} 消息的内容。 - 失败:返回类似如下日志信息,表示AMQP客户端连接物联网平台失败。
您可根据日志提示,检查代码或网络环境,然后修正问题,重新运行代码。
- 成功:返回类似如下日志信息,表示AMQP客户端已接入物联网平台并成功接收消息。
相关文档
服务端订阅消息相关错误码,请参见消息相关错误码。