MQTT 5协议中的基础更改(一)

news2024/12/28 20:10:24

01 协议的基础性变化

MQTT 5是对现有协议规范的重大更新,新版本协议具有以下特征:轻量级、易用性、极强的可扩展性、对移动网络的适用性以及通信参与者的解耦。

02 MQTT仍然是MQTT

如果您熟悉MQTT3.1.1,那么您之前知道的关于MQTT的所有原则和功能同样适用于MQTT v5。不同的是,以往功能的部分细节,如“Last Will and Testament”发生了一点变化,某些功能也得到扩展。此外,由虹科HiveMQ实现的额外的流行功能,如“TTL”或“共享订阅”被添加到新的规范中。

协议也稍有变化,增加了一个额外的控制包(AUTH)。

但总的来说,MQTT5仍然可以清楚地识别为MQTT。

03 MQTT 头部属性和原因代码

MQTT5最灵活的新功能之一是可以在MQTT头部中添加自定义键值(key-value)属性。与HTTP等协议类似,MQTT客户端和代理可以添加任意数量的自定义(或预定义)头部来携带元数据。这种元数据可用于应用程序的特定数据,而预先定义的头部信息被用于实现大多数新的MQTT功能。

许多MQTT数据包现在也包括原因代码(Reason Codes)。一个原因代码表明发生了一个预先定义的协议错误。这些原因代码通常是在确认数据包中进行,允许客户端和代理解释错误情况(并有可能解决错误情况)。原因代码有时也被称为否定确认(Negative Acknowledgements)。以下MQTT数据包可以携带原因代码:

  • CONNACK
  • PUBACK
  • PUBREC
  • PUBREL
  • PUBCOMP
  • SUBACK
  • UNSUBACK
  • AUTH
  • DISCONNECT

04 CONNACK Return Codes—指示不支持/未实现功能

随着MQTT的普及,许多公司创建并提供了许多MQTT部署。但并非所有的这些实现都是完全兼容MQTT规范的,因为有时候一些功能并没有实现,比如QoS 2、保留消息持久会话。值得一提的是,虹科HiveMQ是完全符合MQTT规范的,并且支持所有的功能。

MQTT 5为不完整的MQTT实现提供了一种方法,用来表明该代理不支持特定的功能。客户端的工作是确保不使用不支持的功能。代理的部署是在CONNACK数据包(客户端发送CONNECT数据包后由代理发送)中使用预定义的标头来表明不支持特定的功能。当然,这些标头也可以用来向客户端发送通知,说明它没有使用特定功能的权限。

在MQTT 5中,有以下预定义的头部用于指示未实现的功能(或不允许客户端使用的功能):


这些返回代码对于在异构环境中沟通各个MQTT客户端的权限具有重要作用。这个新功能的缺点是:MQTT客户端需要自己实现对这些代码的解释,并且需要确保应用程序的程序员仅使用代理支持(客户端有权限)的功能。虹科HiveMQ 100% 支持所有 MQTT 5 功能,因此只有在涉及到部署中的权限时,管理员才会使用这些自定义头文件。

下期文章中,我们将继续给大家介绍MQTT5协议中的基础更改中其他新功能的细节描述。

05 关于虹科 HiveMQ

虹科HiveMQ 是一个基于 MQTT 数据传输的通信平台,旨在将数据快速、高效、可靠地传递给连接的物联网设备,HiveMQ 使用 MQTT 协议在设备和企业平台之间进行实时、双向的数据推送。

虹科HiveMQ 的建立是为了解决企业在构建新的物联网应用时面临的一些关键技术挑战,包括:

  • 构建可靠、可扩展的关键业务物联网应用
  • 快速的数据交付,以满足终端用户对响应式物联网产品的期望
  • 通过有效利用硬件、网络和云资源降低运营成本
  • 将物联网数据整合到现有的企业系统中

虹科HiveMQ 提供免费版、专业版、企业版 MQTT Broker 产品,并提供 Kafka、企业安全及 MQTT Broker 桥接三种企业级扩展套件,HiveMQ 还提供高效的 MQTT 客户端及云平台,多方位满足用户需求。


更多精彩资讯 欢迎关注博主 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/458603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通用策略03丨RUMI魔改+krange自适应第3版

量化策略开发,高质量社群,交易思路分享等相关内容 正 文 大家好,今天我们分享2023年度第3期策略——RUMI魔改krange自适应离场第3版迭代。 本期策略是2023年通用系列第3篇。本期主要内容有对RUMI原版的逻辑魔改,其次重点针对kra…

关于Open Shift(OKD) 中 用户认证、权限管理、SCC 管理的一些笔记

写在前面 因为参加考试,会陆续分享一些 OpenShift 的笔记博文内容为 openshift 用户认证和权限管理以及 scc 管理相关笔记学习环境为 openshift v3 的版本,有些旧这里如果专门学习 openshift ,建议学习 v4 版本理解不足小伙伴帮忙指正 对每个…

数据库管理新定义:一款纯Web化免费SQL开发工具,免安装

SQL Studio是一款由麦聪软件研发的多数据库管理工具,提供Windows、Linux 和 MacOS三种版本的软件包,支持中英文两种语言。SQL Studio是用Java编写的,默认使用 JDK 8进行编译。 下载看这里: [SQLStudio] (http://www.maicongs.com/#/home/web)…

云HIS(二级医院,乡镇医院,民营医院,标准化HIS医院信息管理系统源码)

传统 HIS(基于医院信息系统) 和云 HIS(基于云计算的医院信息系统)各有优缺点,选择哪种系统需要根据具体情况进行权衡。 传统 HIS 系统通常由医院自行开发和维护,适用于医院内部信息化程度较高、数据安全性…

Sql 优化工具

1、背景 对于正在运行的mysql 性能如何?参数设置的是否合理?账号设置的是否存在安全隐患? 对于Sql执行效率又如何?如何了然于胸? show profile, explain,slow query log ,索引优化&#xff0…

【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Qt实现滑动条平滑效果

效果图 基于QPropertyAnimation实现 代码部分 //设置滑动条动画 m_scrollAnimationnew QPropertyAnimation; m_scrollAnimation->setTargetObject(this); m_scrollAnimation->setPropertyName("value"); m_scrollAnimation->setEasingCurve(QEasingCurve:…

如何在已创建的SpringBoot项目基础上添加依赖

假设此时已经创建了一个SpringBoot项目,在使用的时候发现缺少 lombok 依赖,此时如何在不创建新项目的基础上添加该依赖?有两种方式: 通过Maven中央仓库导入依赖使用插件EditStarters导入依赖 1,通过Maven中央仓库导入依…

CVE-2023-21839 Weblogic远程代码执行漏洞复现

目录 0x01 声明: 0x02 简介: 0x03 漏洞概述: 0x04 影响版本: 0x05 环境搭建: Docker环境搭建: 漏洞环境搭建: 1、编辑docker-compose.yml 2、启动docker 3、访问页面: 0x…

PM不想做项目管理了,还能干点啥?

做项目经理太累了! 那么 不做项目经理还能做什么呢? 01 铁锅批发商 毕竟 当项目经理的时候 已经囤积了成百上千口锅 十年背锅经验不是瞎吹 并且可现场演示铁锅烙饼 老板亲授,真实还原,充饥必备 02 Office优化师 当项目…

Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)

常用的两款AI可视化交互应用比较: Gradio Gradio的优势在于易用性,代码结构相比Streamlit简单,只需简单定义输入和输出接口即可快速构建简单的交互页面,更轻松部署模型。适合场景相对简单,想要快速部署应用的开发者。 …

43岁程序员,投了上万份简历都已读不回,只好把年龄改成40岁,这才有了面试机会,拿到了offer!...

40多岁找工作有多难? 一位43岁的程序员讲述了自己找工作的经历: 80年,大专,目前没到43周岁,年前被裁,简历上的年龄是42岁,两个多月投了上万份简历,99.5%是已读未回。后来改变策略把简…

阿里最新研究:当ChatGPT 遇上推荐系统,遭遇滑铁卢

文 |小戏 在 GPT-4 屠榜了 NLP,SAM 零样本分割一切让 CV 消失后,不知道大家会不会有好奇 AI 三大现实应用的另一边岁月静好的推荐系统有没有感受到来自遥远大模型带来的巨大压力。 尽管 ChatGPT 的训练过程似乎没有对推荐系统太多的兼容,但是…

[2020.3.13]通过Android反编译找出问题根因

反编译软件推荐如下: (1)JEB.android.decompiler (2)jadx-0.7.1 问题:喜马拉雅初次进入直播功能时显示无网络连接;播放音频时,播放界面下方内容无法加载,显示网络未连接 1 初次进入直播功能时显示无网络连接 2 左滑切换直播间…

Stability AI,新人工智能背景下的开源先锋

今天跟大家聊聊一家总部设在伦敦的AI公司,虽然小,但对这一波AI浪潮的贡献不可谓不小,好产品好公司都值得推荐给大家。 开源生成式绘画 Stable Diffusion 提起Stability AI,多少有些陌生,但提起Stable Diffusion&#x…

程序员,停止焦虑吧!|原创

hi,我是阿笠。今天聊聊程序员的焦虑问题。 不知道是我看到的消息被定向推送,还是因为现实环境就这样,似乎越来越多的人都被焦虑所困扰。 我也是其中一员。 失眠、焦虑 前段时间因为睡眠困扰,我去看了医生,医生给出的诊…

JavaScript Debugger 调试断点模式

在代码中加入debugger,相当于断点停顿,可用于查看变量传递情况,比如:Vue组件中生命周期onLoad(options) ,在上一页面进入下一页面后,传递进来的参数值。 备注 :options 参数为字符串&#xff0…

测试Ocr工具IronOCR(续2:编写圈选图片识别文本的程序)

上篇文章介绍了加载图片并圈选图片中文字区域的程序实现方式,本文基于此实现识别圈选区域文字内容的程序。主要识别语言包括英文和中文。IronOCR包中自带英文语言包,项目还需安装中文语言包,建议直接安装IronOcr.Languages.Chinese语言包&…

【Java EE】-CSS详解

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【JavaEE】 分享: 且视他人如盏盏鬼火,大胆地去走你的道路。——史铁生《病隙碎笔》 主要内容:CSS引入html的三种方式,CSS八大选择器&#xff…