您现在的位置是:首页 > 文章详情

物联网平台服务端订阅Java SDK解读

日期:2019-08-06点击:674

1、使用服务端订阅功能,需在控制台上进行设置,选择要推送的消息类型。
1

2、在Maven工程项目中添加依赖,如下所示。

<dependencies> <!-- Aliyun core --> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.3.5</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-iot</artifactId> <version>6.11.0</version> </dependency> <!-- iot message client --> <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>iot-client-message</artifactId> <version>1.1.3</version> </dependency> <!-- 日志 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies>

3、使用自己账号的accessKey、accessSecret、regionId、uid初始化客户端。

 // 阿里云accessKey String accessKey = "xxxxxxxxxxxxxxxx"; // 阿里云accessSecret String accessSecret = "xxxxxxxxxxxxxxxxxx"; // regionId String regionId = "cn-shanghai"; // 阿里云uid String uid = "xxxxxxxxxxxxxxx"; // endPoint: https://${uid}.iot-as-http2.${region}.aliyuncs.com String endPoint = "https://" + uid + ".iot-as-http2." + regionId + ".aliyuncs.com"; // 连接配置 Profile profile = Profile.getAccessKeyProfile(endPoint, regionId, accessKey, accessSecret); // 构造客户端 MessageClient client = MessageClientFactory.messageClient(profile);

4、设置消息接收接口。
需要注意的是,目前服务端订阅还无法过滤消息,也就是说该账号下的所有产品下的所有设备的消息都会被订阅到(前提是在第一步设置了要推送的消息类型)。
但是可以针对特定Topic发布上来的消息做单独的业务处理(如下面的messageCallback),其他没有设置特殊回调的消息,统一走公共的接口(也就是下面的messageCallbackComm)

 MessageCallback messageCallbackComm = new MessageCallback() { @Override public Action consume(MessageToken messageToken) { Message m = messageToken.getMessage(); System.out.println("This is common callback!"); System.out.println("topic : " + m.getTopic()); System.out.println("receive : " + new String(m.getPayload())); System.out.println(" "); return MessageCallback.Action.CommitSuccess; } }; MessageCallback messageCallback = new MessageCallback() { @Override public Action consume(MessageToken messageToken) { Message m = messageToken.getMessage(); System.out.println("topic : " + m.getTopic()); System.out.println("receive : " + new String(m.getPayload())); return MessageCallback.Action.CommitSuccess; } }; String topic = "xxxxxxxxxxxxxxxx"; client.setMessageListener(topic,messageCallback); client.connect(messageCallbackComm);

5、举例。
假设代码中的topic设置为设备属性上报的Topic(/sys/${productKey}/${deviceName}/thing/event/property/post)
那么设备进行上报属性的操作,在服务端收到的消息是messageCallback中打印的内容。
对于设备的其他行为(比如上下线),在服务端收到的消息是messageCallbackComm中打印的内容(也就是包括了This is common callback!这句话)

原文链接:https://yq.aliyun.com/articles/713008
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章