MQTT 介绍与学习 —— 筑梦之路

news2024/11/15 9:16:27

之前写过的相关文章:

MQTT协议(转载)——筑梦之路_mqtt url-CSDN博客

k8s 部署mqtt —— 筑梦之路-CSDN博客

CentOS 7 搭建mqtt服务——筑梦之路_腾讯云宝塔搭 centos 7.9.2009 x86_64 建标准mqtt服务器-CSDN博客

mqtt简介

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议。 

客户端服务端
一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:也称为"消息代理"(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间,它可以:
- (1)发布其他客户端可能会订阅的信息;- (1)接受来自客户的网络连接;
- (2)订阅其它客户端发布的消息;- (2)接受客户发布的应用信息;
- (3)退订或删除应用程序的消息;- (3)处理来自客户端的订阅和退订请求;
- (4)断开与服务器连接。- (4)向订阅的客户转发应用程序消息。

设计原则:

①精简,不添加可有可无的功能;

②发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递,解耦Client/Server模式,带来的好处在于不必预先知道对方的存在(ip/port),不必同时运行;

③允许用户动态创建主题(不需要预先创建主题),零运维成本;

④把传输量降到最低以提高传输效率;

⑤把低带宽、高延迟、不稳定的网络等因素考虑在内;

⑥支持连续的会话保持和控制(心跳);

⑦理解客户端计算能力可能很低;

⑧提供服务质量( quality of service level:QoS)管理

⑨不强求传输数据的类型与格式,保持灵活性(指的是应用层业务数据)。

MQTT应用领域:

①物联网M2M通信,物联网大数据采集

②Android消息推送,WEB消息推送

③移动即时消息,例如Facebook Messenger

②智能硬件、智能家居、智能电器

⑤车联网通信,电动车站桩采集

⑥智慧城市、远程医疗、远程教育

⑦电力、石油与能源等行业市场

 MQTT协议相关概念

MQTT协议中的方法

- (1)CONNECT:客户端连接到服务器- (9)SUBACK:订阅确认
- (2)CONNACK:连接确认- (10)UNSUBSCRIBE:取消订阅
- (3)PUBLISH:发布消息- (11)UNSUBACK:取消订阅确认
- (4)PUBACK:发布确认- (12)PINGREQ:客户端发送心跳
- (5)PUBREC:发布的消息已接收- (13)PINGRESP:服务端心跳响应
- (6)PUBREL:发布的消息已释放- (14)DISCONNECT:断开连接
- (7)PUBCOMP:发布完成- (15)AUTH:认证
- (8)SUBSCRIBE:订阅请求

消息服务质量QOS

 MQTT 协议中规定了消息服务质量(Quality of Service),它保证了在不同的网络环境下消息传递的可靠性,QoS 的设计是 MQTT 协议里的重点。

MQTT 设计了 3 个 QoS 等级。

- QoS 0:消息最多传递一次。

- QoS 1:消息传递至少 1 次。

- QoS 2:消息仅传送一次。

QoS0:"至多一次",消息发布完全依赖底层TCP/IP网络。会发生消息丢失。一个消息不会被接收端应答,也不会被发送者存储并再发送。这个也被叫做“即发即弃” 

QoS1:"至少一次",确保消息到达,但消息重复可能会发生。发送者将会存储发送的信息直到发送者收到一次来自接收者的PUBACK格式的应答。

QoS2:"只有一次",确保消息到达一次。如果接收端接收到了一个QoS为2的PUBLISH消息,它将相应地处理PUBLISH消息,并通过PUBREC消息向发送方确认。

PUBLISH:发布消息 PUBREC:发布收到 PUBREL:发布释放 PUBCOMP:发布完成

 发送订阅不同QOS情况下是如何生效的

topic通配符匹配规则 

 

物联网级消息中间件EMQ 

EMQ X Broker 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构,发布订阅模式的开源 MQTT 消息服务器。

EMQ官网:https://www.emqx.cn/

为什么选择EMQ X ?从支持 MQTT5.0、稳定性、扩展性、集群能力等方面考虑,EMQX 的表现应该是最好的。

EMQX的特点

  • EMQ X 目前为开源社区中最流行的 MQTT 消息中间件;

  • EMQ X 是开源社区中第一个支持 5.0协议规范的消息服务器,并且完全兼容 MQTT V3.1 和 V3.1.1 协议。

  • 除了 MQTT 协议之外,EMQ X 还支持MQTT-SN、CoAP、 LwM2M、LoRaWAN 和 WebSocket 等物联网协议

  • 单机支持百万连接,集群支持千万级连接;毫秒级消息转发。

  • 易于安装和使用;

  • 中国本地的技术支持服务;

  • 扩展模块和插件,EMQ X 提供了灵活的扩展机制,支持企业的一些定制场景;

  • 桥接

  • 共享订阅

docker运行

docker run -tid --name emqx -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 8883:8883 -p 8084:8084 -p 18083:18083  emqx/emqx:v4.1.0

 EMQDashboard

EMQ X 提供了 Dashboard 以方便用户管理设备与监控相关指标。通过 Dashboard可以查看服务器基本信息、负载情况和统计数据,可以查看某个客户端的连接状态等信息甚至断开其连接,也可以动态加载和卸载指定插件。

访问地址 http://192.168.100.100:18083 来查看Dashboard,**默认用户名是 admin,密码是 public*

客户端调试工具MQTTX

 MQTT X 是 EMQ 开源的一款优雅的跨平台 MQTT 5.0 桌面客户端,它支持 macOS, Linux, Windows。

MQTT X 的 UI 采用了聊天界面形式,简化了页面操作逻辑,用户可以快速创建连接,允许保存多个客户端,方便用户快速测试 MQTT/MQTTS 连接,及 MQTT 消息的订阅和发布。

延迟消息

 EMQ X 的延迟发布功能可以实现按照用户配置的时间间隔延迟发布 PUBLISH 报文的功能。模块开启emqx_mod_delayed

延迟发布主题的具体格式如下:

$delayed/{DelayInterval}/{TopicName}

-delayed:使用delayed 作为主题前缀的消息都将被视为需要延迟发布的消息。

- {DelayInterval}: 指定该 MQTT 消息延迟发布的时间间隔,单位是秒,允许的最大间隔是 4294967 秒。

- {TopicName}: MQTT 消息的主题名称。

1.在Websocket上订阅主题:t2/a

2.在Websocket上发布消息主题:topic:  $delayed/10/t2/a

共享订阅

 不带群组的共享订阅

格式:

$queue/{TopicName}

带群组的共享订阅

格式:

$share/<group-name>/{TopicName}

开源分布式LOT平台:

 https://gitee.com/pnoker/iot-dc3

文档地址:  https://doc.dc3.site/

 

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

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

相关文章

NV040D语音芯片应用于取暖桌:智能语音提高用户体验

科技与生活的结合&#xff0c;是科技发展的展示。天气的降温&#xff0c;取暖桌越来越取得用户的心&#xff0c;时至今日传统的取暖桌已经没有办法满足用户的需求&#xff0c;智能语音取暖桌给用户的生活带来了不一样的体验。 NV040D语音芯片是一款性能稳定的芯片&#xff0c;拥…

strtok()的用法及实现哦

1. 用法 1. 声明&#xff1a;char *strtok(char *str, const char *delim) str -- 要被分解成一组小字符串的字符串。第一次调用 strtok() 时&#xff0c;这个参数应该是你想要分割的字符串。随后的调用应该将此参数设置为NULL&#xff0c;以便继续从上次的位置分割。delim -- …

弹性搜索引擎Elasticsearch:本地部署与远程访问指南

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装…

前端常用去重的几种方式

文章目录 方式1: ES6新语法方式2: 遍历 利用filter方式3: 使用 new Map() for循环方式4: 利用 hasOwnProperty总结 在github 查看该文章 方式1: ES6新语法 过滤出网页中不重复的html标签 结合去重知识点考查 […new Set([…document.querySelectorAll(‘*’)].map(v>v.t…

JSON初学习

目录 1、JSON定义 2、与 JS 对象的关系 3、常用类型示例 4、JSON与XML比较 1、JSON定义 JSON&#xff08;JavaScript Object Notation, JS对象简谱&#xff09;是一种轻量级的数据交换格式。它基于 ECMAScript&#xff08;European Computer Manufacturers Association, 欧…

【AI美图】第01期效果图,AI人工智能无绘画,美图欣赏

人工智能被各大平台传递&#xff0c;我也来凑一下热闹&#xff0c;放一组基础图片展示 介绍一下模型来源Stability AI&#xff1a; Stability AI直接将模型开源&#xff0c;且方式之粗暴&#xff0c;几乎完全不对生成内容做任何审核或者过滤。目前发布的稳定版本仅包含部分关…

YOLOv8优化策略:UniRepLKNetBlock 助力检测 | UniRepLKNet,通用感知大内核卷积网络,2023.12

🚀🚀🚀本文改进: UniRepLKNet,通用感知大内核卷积网络,ImageNet-22K预训练,精度 和速度SOTA,ImageNet达到88%, COCO达到56.4 box AP,ADE20K达到55.6 mIoU UniRepLKNetBlock 与C2f进行结合使用 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学…

上海亚商投顾:沪指高开低走 电力、煤炭板块逆势走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开低走&#xff0c;深成指、创业板指盘初涨超1%&#xff0c;随后冲高回落集体翻绿。 国企改革…

Qt图形设计

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置//设置窗口标题this->setWindowTitle("王者荣耀");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\28033\\Pictures\\Saved Pictures\\pict…

学习使用echarts漏斗图的参数配置和应用场景

学习使用echarts漏斗图的参数配置和应用场景 前言什么是漏斗图漏斗图的特点及应用场景漏斗图的特点漏斗图常见的的应用场景&#xff1a; echarts中漏斗的常用属性echart漏斗代码美化漏斗图样式1、设置标题字体大小2、设置标签样式3、设置漏斗图为渐变颜色4、设置高亮效果5、设置…

java导出word使用模版与自定义联合出击解决复杂表格!

1. 看一下需要导出什么样子的表格 如图所示&#xff0c;这里的所有数据行都是动态的&#xff0c;需要根据查询出来的数据循环展示。 如果只是这样的话&#xff0c;使用freemarker应该都可以搞定&#xff0c;但是他一列中内容相同的单元格&#xff0c;需要合并。 这对于表格样式…

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法&#xff1a;Save1.1.3. 对Page结构体支持页面内容查看方法&#xff0c;同时提供页面文件是否存在的方法 1.2. 简单验证上面…

【树莓派】高级开发概述、开发环境搭建(内核镜像拷贝至树莓派并启动新内核)

一、树莓派开发环境搭建 二、Linux文件系统的目录结构 三、树莓派Linux源码目录树分析 四、树莓派Linux源码配置 五、如何配置树莓派的Linux内核 六、树莓派Linux内核编译 七、配置启动参数的cmdline.txt 一、树莓派开发环境搭建 树莓派官网 raspberrypi raspberrypi/tools…

FM30H12G N通道沟槽电源MOS管 封装形式PDFN5*6

FM30H12G 是一款 N通道沟槽电源的场效应管&#xff08;MOS管&#xff09;&#xff0c;封装形式&#xff1a;PDFN5*6。 来百度APP畅享高清图片 FM30H12G应用&#xff1a; 1、液晶电视 2、笔记本 3、电梯 4、感应加热 5、电动工具

低碳未来,智慧共赢!SIA上海工业自动化展2024焕新出发!

近年来&#xff0c;全球积极推进智能化数字化赋能工程&#xff0c;国内制造业也全面向数字化智能化转型。重点企业、龙头企业充分发挥综合优势&#xff0c;着力推动智能工厂、数字化车间的建设&#xff0c;深入实施“机器换人”战略&#xff0c;以促进产品、企业、产业全面升级…

使用 PAI-Blade 加速 StableDiffusion Fine-Tuning

01 背景 Stable Diffusion 模型自从发布以来在互联网上发展迅猛&#xff0c;它可以根据用户输入的文本描述信息生成相关图片&#xff0c;用户也可以提供自己喜爱的风格的照片&#xff0c;来对模型进行微调。例如当我们输入 "A photo of sks dog in a bucket" &…

城市数字化管理、智慧城市、数字孪生城市间的关系和演变

基于《基于数字孪生的智慧城市》和《2023版数字孪生世界白皮书》&#xff0c;我们可以全面了解从数字城市管理到智慧城市&#xff0c;再到数字孪生城市的关系和发展历程。 以下是这一顺序和继承关系的要点总结&#xff1a; 城市数字化管理 这是城市地区向智慧城市演进的初始…

蓝桥杯专题-真题版含答案-【信用卡号校验】【数量周期】【取球博弈】【Playfair密码】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

节气丨大雪过后,阳气归根的十五天,这些事再不做就晚了!

亲爱的家人们大家好&#xff0c;大雪&#xff0c;是24节气中的第21个节气&#xff0c;也是冬季的第3个节气。 这一节气的到来&#xff0c;标志着仲冬时节正式开始&#xff0c;特点是气温显著下降、降水量增多。 古人认为“秋冬养阴”&#xff0c;所谓养阴&#xff0c;即是养阳…

浏览器输入URL再按下回车会经历哪些过程

目录 前言 一、解析URL 二、解析域名(DNS) 三、TCP三次握手建立连接 1.seq、syn、ack含义 2.三次握手 四、发送http/https请求 五、服务器响应请求 六、浏览器解析渲染页面 七、TCP四次挥手断开连接 总结 前言 看各种面经发现这个问题是一个高频出现的面试问题&#xff0c;但…