「Android基于MQTT实现消息通知」

「Android基于MQTT实现消息通知」,第1张

在对接项目中 IoT 时,发现目前有对 MQTT 做了接入,这里记录一下,官方的资料比较详细,这里主要从实现细节出发;对具体的需求以及配套的技术方案进行整理,以供参考。

提到 IoT(Internet of Things)、IIoT(Industrial IoT ) 不得不说 MQTT ,其被广泛的应用在物联网以及工业物联网之中,是一种消息传递协议。不同于我们所认识的平时常见的一些智能设备,如手机、电脑、平板等;这些设备一般都有着很好的计算能力,所依赖的网络环境很优质。但是一般的硬件设备性能较差,网络环境不稳定,而 MQTT 则是专门针对于硬件性能,网络状态不稳定场景下而生的。有着天然的优势。

详细信息

主要需要注意 Topics 的匹配规则,分为单项通配符,与多项通配符。单项以 + 连接:this/is/+/single,其中仅仅 + 部分可以被替换为单个路径(以 / 分割)。多项通配符仅支持在尾端支持:this/is/multi/#,并且是多级的。

详细信息

保活时效,包括其他的字段,官方文档都给出了很详细的解释,认真了解一项技术实现,官方的文档还是最好的选择文档。这里主要基本认识MQTT是个什么东西,具体的实现细节与规范也不是一两句话可以说的清楚的,且可能存在误导的风险。MQTT

以实际的项目为例,现需要实现的功能有:

功能相对很简单,总结就是服务端推送消息,设备根据消息做出响应。

导入依赖

主要分为几个类:a主体请求 Client ,b数据返回的回调 dataCallback ,c链接状态回调 connectCallback ,d具体消息处理策略 IHandler 。方案主要就包括这几个大类,逐步实现各个细节。

在实现之前,列举几个关键的参数,参数配置在 MqttConnectOptions

关于自动重新连接有三个必要条件, cleanSession 需要设置为 false isAutomaticReconnect 需要设置为 true ,并且初始 已经连接过 。划重点,这里就要求, MQTT 虽然可以自动重试连接当时必须有这三个前提,那么首次由于网络等其他原因,这里的重试机制是需要我们自身去实现的,也就是需要保证首次能够连接到服务端。源码以及注释:

需要注意的是这里的 ClientId ,是唯一性的,像 IoT 设备以设备 deviceId 作为 ClientId ,如果换成用户 userId ,当在多设备登录的情况下,那么重试等其他一些机制会影响预期结果,给排查问题带来一定的难度。

消息体中会包含不同的 type ,根据不同的 type 实现不同的处理器,当然为了灵活还要借助 注解机制

通过反射的方式加载对应的 IHandler 实现类,核心代码

使用时,直接加上注解:

整个流程的主要部分已经给出,核心是通过不同的消息 type 查找出对应的 处理器 ;当然这部分主要是由注解完成的,对于处理器的查找则是通过 反射 的方式来进行匹配的。

MQTT官网

问题1:工业物联网是什么?

简单来说,就是物联网在工业控制上的具体应用。

问题2:SSL/TLS是什么?

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种 安全协议 。TLS与SSL在传输层对网络连接进行加密。大部分互联网登录都是用的SSL/TLS,可以去网易邮箱>物联网有四层平台:设备连接平台、设备管理平台、应用分析平台、应用开发平台,提供Paas服务。这都是使能平台。选择现有的IOT使能平台可以通过平台开发厂商的影响力、成功案例、全球通用性、服务持续提供能力、开发水平、方案解决能力等多方面综合考虑。
一、 提供统一的终端接入
通过使能平台,为不同业务类型的所有物联网应用终端提供统一的数据接入方案,极大降低了终端接入的难度和成本。终端数据接入支持多种通讯设备、通讯协议,对接收到的数据进行辨识、分发以及报警分析等预处理。
二、 提供统一的应用基础运行平台
物联网应用软件与传统的应用软件应用相比,有底层终端类型及数量多、行业应用复杂的特点,各种行业终端数量规模通过一定的发展往往能达到百万甚至更高级别,要求使能平台能维护大量共享数据和控制数据,提供物联网应用的统一运行环境,从概念、技术、方法与机制等多个方面无缝集成数据的实时处理与历史记录,实现数据的高时效调度与处理,并保证数据的一致性,以便能够支撑所有连接终端所需要呈现的各种应用。
三、 提供统一的安全认证
以用户信息、系统权限为核心,集成各业务系统的认证信息,提供一个高度集成且统一的认证平台。
四、 统一的数据管理及数据交换
不同种类及数终端的海量数据在平台上得以集中管理并且提供统一的数据交换功能,通过平台连接各种业务相关的异构系统、应用以及数据源,满足重要系统之间无缝共享和交换数据的需要。彻底解决了由于业务不同、应用不同、系统不同所导致的信息孤岛问题,数据平台的统一性让大数据分析成为可能,让更多的应用能够因数据的开发性得以实现。
五、 提供统一的门户支撑
提供一个灵活、规范的信息组织管理平台和全网范围的网络协作环境,实现集成的信息采集、内容管理、信息搜索,能够直接组织各类共享信息和内部业务基础信息,面向不同使用对象,通过门户技术实现个性化服务,实现信息整合应用。
六、 提供多种业务基础构件
为各行业应用业务提供开发辅助工具、快速定制、地理信息服务、权限管理、数据展现及挖掘等多种平台支撑服务。通过这些基础构件,实现系统的松散耦合,提高系统的灵活性和可扩展性,保障快速开发、降低运营维护成本。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13009741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存