失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 阿里物联网平台(IOT)——业务服务器获取阿里iot平台接入设备的实时设备采集数据

阿里物联网平台(IOT)——业务服务器获取阿里iot平台接入设备的实时设备采集数据

时间:2022-11-11 06:15:43

相关推荐

阿里物联网平台(IOT)——业务服务器获取阿里iot平台接入设备的实时设备采集数据

基于HTTP/2通道的服务端订阅-设备状态和数据

一、服务端订阅

服务端订阅流程

在IoT场景,有时候我们期望业务服务器能接收到设备状态和设备采集的数据,而不是通过云产品中转,

这时我们可以开启服务端订阅,IoT平台会把设备产生的消息通过HTTP/2通道推送到业务服务器,以便根据自身业务场景消费。

注:HTTP/2是方便、快捷、低延时,小堆积的消息流转通道,不是队列。目前是只有java8客户端sdk。 如果业务数据流非常大, 需要支持海量消息堆积,建议通过规则引擎流转队列方式处理。

不论那个方式,消费端还是需要提升自身消费速率才能高效处理业务消息。

服务端订阅SDK

注:目前仅提供Java8版SDK java sdk依赖

<!-- Aliyun core --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>3.7.1</version></dependency><!-- iot message client --><dependency><groupId>com.aliyun.openservices</groupId><artifactId>iot-client-message</artifactId><version>1.1.2</version></dependency>

消费iot平台设备实时采集数据

import .UnknownHostException;import java.util.concurrent.ExecutionException;import com.aliyun.openservices.iot.api.Profile;import com.aliyun.openservices.iot.api.message.MessageClientFactory;import com.aliyun.openservices.iot.api.message.api.MessageClient;import com.aliyun.openservices.iot.api.message.callback.MessageCallback;import com.aliyun.openservices.iot.api.message.entity.Message;public class H2Client {public static void main(String[] args) throws UnknownHostException, ExecutionException, InterruptedException {// 身份String accessKey = "阿里云accessKey";String accessSecret = "阿里云accessSecret";String regionId = "cn-shanghai";String uid = "阿里云账号 uid";String endPoint = "https://" + uid + ".iot-as-http2." + regionId + ".";// 连接配置Profile profile = Profile.getAccessKeyProfile(endPoint, regionId, accessKey, accessSecret);// 构造客户端MessageClient client = MessageClientFactory.messageClient(profile);// 数据接收client.connect(messageToken -> {Message m = messageToken.getMessage();System.out.println("\ntopic="+m.getTopic());System.out.println("payload=" + new String(m.getPayload()));System.out.println("generateTime=" + m.getGenerateTime());// 此处标记CommitSuccess已消费,IoT平台会删除当前Message,// 否则会保留到过期时间return mitSuccess;});}}

注:目前服务端订阅是基于uid的,所有产品的消息都会被HTTP/2的client端消费,这时需要我们自己根据topic包含的productKey/deviceName区分

如果觉得《阿里物联网平台(IOT)——业务服务器获取阿里iot平台接入设备的实时设备采集数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。