物联网平台服务端订阅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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程