物联网平台服务端订阅Java SDK解读
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!这句话)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MessagePack Java 0.6.X 使用一个消息打包(message-packable)类
使用注解@Message来让你可以序列化你自己类中对象的public 字段。 本代码可以在https://github.com/cwiki-us-demo/messagepack-6-demo-java/blob/master/src/test/java/com/insight/demo/msgpack/MessagePack6Object.java中下载到本地后进行编译测试。 package com.insight.demo.msgpack; import org.junit.Test;import org.msgpack.MessagePack;import org.msgpack.annotation.Message;import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java.util.UUID; import static org.junit.Assert.assertEquals; /** MessagePack6Objects* @author yhu*/ public class MessageP...
- 下一篇
JavaScript函数式编程究竟是什么?
摘要: 理解函数式编程。 作者:前端小智 原文:JS中函数式编程基本原理简介 Fundebug经授权转载,版权归原作者所有。 在长时间学习和使用面向对象编程之后,咱们退一步来考虑系统复杂性。 在做了一些研究之后,我发现了函数式编程的概念,比如不变性和纯函数。这些概念使你能够构建无副作用的函数,因此更容易维护具有其他优点的系统。 在这篇文章中,将通大量代码示例来详细介绍函数式编程和一些相关重要概念。 什么是函数式编程 函数式编程是一种编程范式,是一种构建计算机程序结构和元素的风格,它把计算看作是对数学函数的评估,避免了状态的变化和数据的可变。 纯函数 当我们想要理解函数式编程时,需要知道的第一个基本概念是纯函数,但纯函数又是什么鬼? 咱们怎么知道一个函数是否是纯函数?这里有一个非常严格的定义: 如果给定相同的参数,则返回相同的结果(也称为确定性)。 它不会引起任何副作用。 如果给定相同的参数,则得到相同的结果 如果给出相同的参数,它返回相同的结果。 想象一下,我们想要实现一个计算圆的面积的函数。 不是纯函数会这样做,接收radius 作为参数,然后计算radius * radius * ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境