初出茅庐的小李博客之用MQTT.fx软件进行消息发布与订阅【 基于EMQX Cloud】

MQTT.fx软件使用简单介绍

在这里插入图片描述
MQTT.fx 的软件界面如下图所示,最上方为 MQTT Broker 连接地址栏,及其连接配置。其下方功能 Tabs 含有 Publish 发布栏、Subscribe 订阅栏、Scripts 脚本栏、Broker Status 状态消息栏、Log 日志信息控制栏。
在这里插入图片描述

连接之前要明确几个概念

以下概念仅供学习参考 ,个人理解 描述可能不严谨

概念1:什么是消息发布

我的个人理解 就是一个设备是作为信息提供的一方 也就是信息的生产者

概念2:什么是消息订阅

我的个人理解 就是一个设备作为消息获取的以防 也就是信息的消费者

概念3:什么是主题

我的个人理解 就是设备进行信息交互的平台 可以类比公众号我订阅了某个公众号那这个公众号将来更新了文章我就可以阅读,信息的消费者获取信息的一个渠道,同时信息的生产者也可以把信息传到上面供信息的消费者使用,这个公众号就是一个转发信息的桥梁

MQTT客户端跟MQTT服务器都可以进行信息的发布

在这里插入图片描述

MQTT客户端一旦连接到服务端,便可以发布消息。 每条发布的MQTT消息必须包含一个主题。MQTT服务器可以通过主题确定将消息转发给哪些客户端。(注:这里的消息指的是MQTT报文。)

在建立通信前简单提一下QoS(Quality of Service)QoS表示MQTT消息的服务质量等级。QoS有三个级别:0、1和2。QoS决定MQTT通讯有什么样的服务保证。
QoS:发布消息的服务质量,即:保证消息传递的次数
00:最多一次,即:<=1
01:至少一次,即:>=1
10:一次,即:=1
11:预留

什么是报文标识符
报文标识符可用于对MQTT报文进行标识。不同的MQTT报文所拥有的标识符不同。MQTT设备可以通过该标识符对MQTT报文进行甄别和管理。请注意:报文标识符的内容与QoS级别有密不可分的关系。只有QoS级别大于0时,报文标识符才是非零数值。如果QoS等于0,报文标识符为0。这里不展开说 如果大家对这个协议感兴趣大家可以看MQTT协议的详细文档
我这里简单描述下
在MQTT协议中规定了一个固定报头 固定报头的第一个字节有8个bit
其中高4位的排列组合表示MQTT数据包的类型,
在这里插入图片描述
总共4个bit 排列组合有16种情况 分别是以下类型

0 Reserved — 保留
1 CONNECT 客户端到服务器 客户端请求连接到服务器
2 CONNACK 服务器到客户端 连接确认
3 PUBLISH 双向 发布消息
4 PUBACK 双向 发布确认
5 PUBREC 双向 发布收到(保证第1部分到达)
6 PUBREL 双向 发布释放(保证第2部分到达)
7 PUBCOMP 双向 发布完成(保证第3部分到达)
8 SUBSCRIBE 客户端到服务器 客户端请求订阅
9 SUBACK 服务器到客户端 订阅确认
10 UNSUBSCRIBE 客户端到服务器 请求取消订阅
11 UNSUBACK 服务器到客户端 取消订阅确认
12 PINGREQ 客户端到服务器 PING请求
13 PINGRESP 服务器到客户端 PING应答
14DISCONNECT 客户端到服务器 中断连接
15Reserved — 保留

Qos 就是PUBLIS 数据包的低4位的bit2 bit1 其他数据包这两位有其他的含义或者保留
在这里插入图片描述

保留标志的理解

在默认情况下,当客户端订阅了某一主题后,并不会马上接收到该主题的信息。只有在客户端订阅该主题后,服务端接收到该主题的新信息时,服务端才会将最新接收到的该主题信息推送给客户端。
但是在有些情况下,我们需要客户端在订阅了某一主题后马上接收到一条该主题的信息。这时候就需要用到保留标志这一信息。

有效载荷的理解

有效載荷是我们希望通过MQTT所发送的实际内容。我们可以使用MQTT协议发送文本,图像等格式的内容。这些内容都是通过有效載荷所发送的。

重发标志的理解

当MQTT报文的接收方没有及时确认收到报文时,发送方会重复发送MQTT报文。在重复发送MQTT报文时,发送方会将此“重发标志”设置为true。请注意,重发标志只在QoS级别大于0时使用。因为大于0 表示 【01】:至少一次,即:>=1 【10】:一次,即:=1

连接设置可以参考我上一篇博客

这里已经连接成功
在这里插入图片描述

订阅/发送消息
完成连接的建立之后,即可开始订阅消息。因为 MQTT 协议采用的是订阅/推送的方式,所以我们需要在连接之后订阅主题,之后主题上有消息产生即可收到来自 EMQX Cloud 推送。

我在 EMQX Clouds 开启了数据功能
在这里插入图片描述
这里的操作需要用到SQL 语言 我不太了解 就用示例的几个例子进行了简单的配置

具体配置如下
在这里插入图片描述
我的理解是当客户端 建立了对这个主题的连接时候会触发一个事件 这个事件会触发一个消息
消息是JSON 格式

订阅主题

订阅两个主题:

在这里插入图片描述
在这里插入图片描述

向某个主题发布消息

这是向AQST/TEST 发布的消息
在这里插入图片描述
这是收到AQST/TEST 发布的消息
在这里插入图片描述
这是向t/a这个主题发布的消息
在这里插入图片描述
这是订阅了t/a这个主题收到的消息
在这里插入图片描述
至此:
两个主题的订阅跟发布都测试通过了
看一下后台数据记录,连接数最多就是1 订阅最多是2 报文流量根据发送的信息数据量也不一样。

连接数含义
连接数图表展示了在选择时间段内,连接到部署的客户端的数量。这里连接的客户端数也包含了保留会话的离线客户端。保留会话,即客户端断开连接时,会话仍然保持并保存离线消息,直到会话超时注销。

订阅数含义
订阅数图表展示在选择的时间段内部署的总订阅数

总流量含义:接收和发送消息的报文总量。
接受报文流量:从设备或应用端发送到部署的消息的报文总量。
发送报文流量:从部署发送到设备或应用端的消息的报文总量。

消息流入流出含义
消息流入流出图表展示在选择的时间段内,部署接收到的消息数、发送出去的消息数和未被订阅的消息数。
部署接收到的消息为从设备或应用端发送到部署的消息数。
部署发送的消息为从部署发送到设备或应用端的消息

报文流量含义
报文流量图表展示在选择的时间段内,部署接收到的消息以及发送出去的消息报文流量,包含以下3种数据:

在这里插入图片描述
丢弃消息
丢弃消息图表显示在所选时间段内发送阶段丢弃的消息。消息被丢弃的原因可能是报文太大、消息队列已满或消息过期。

好了、之所以用MQTT.fx软件进行消息发布与订阅是为了测试消息发布跟订阅的流程,明确主题、订阅、发布的概念,当然MQTT协议内容很多,后续会考虑用ESP32 当作MQTT客户端进行数据的通信测试。

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

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

相关文章

【Linux系列】软链接使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

深入编程逻辑:从分支到循环的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、编程逻辑的基石&#xff1a;分支与循环 分支逻辑详解 代码案例&#xff1a;判断整数是…

UE5 双手握剑的实现(逆向运动学IK)

UE5 双手握剑的实现 IK 前言 什么是IK&#xff1f; UE官方给我们提供了很多对于IK处理的节点&#xff0c;比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等&#xff0c;但是看到这&#xff0c;很多人就好奇了&#xff0c;什么是IK&#xff1f; 首先我们来看看虚幻小白人的骨…

[图解]产品经理创新之阿布思考法

0 00:00:00,000 --> 00:00:01,900 那刚才我们讲到了 1 00:00:02,730 --> 00:00:03,746 业务序列图 2 00:00:03,746 --> 00:00:04,560 然后怎么 3 00:00:05,530 --> 00:00:06,963 画现状&#xff0c;怎么改进 4 00:00:06,963 --> 00:00:09,012 然后改进的模式…

一条命令安装Metasploit Framework

做安全渗透的人都或多或少的使用kali-Linux系统中msfconsole命令启动工具&#xff0c;然而也经常会有人遇到这样那样的问题无法启动 今天我们就用一条命令来重新安装这个工具 curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/met…

Redis机制-Redis互斥锁、分布式锁

目录 一 互斥锁 二 分布式锁 Redis实现分布式锁 redisson实现分布式锁 可重入性&#xff1a; 主从一致性&#xff08;性能差&#xff09;&#xff1a; 一 互斥锁 假设我们现在有一个业务要实现秒杀优惠券的功能&#xff0c;如果是一个正常的流程&#xff0c;线程之间应该…

阅读笔记——《未知协议状态机推断技术研究综述》

【参考文献】盛嘉杰, 牛胜杰, 陈阳, 等. 未知协议状态机推断技术研究综述[J]. 计算机与现代化, 2023 (05): 58.【注】本文仅为作者个人学习笔记&#xff0c;如有冒犯&#xff0c;请联系作者删除。 摘要 协议逆向工程&#xff08;PRE&#xff09;描述了协议的行为逻辑&#xff…

spring cloud config server源码学习(一)

文章目录 1. 注解EnableConfigServer2. ConfigServerAutoConfiguration2.1 ConditionalOnBean和ConditionalOnProperty2.2 Import注解2.2.1. EnvironmentRepositoryConfiguration.class2.2.2. CompositeConfiguration.class2.2.3. ResourceRepositoryConfiguration.class2.2.4.…

shell命令运行原理及Linux权限问题

目录 shell命令以及运行原理用户管理添加用户删除用户sudo Linux权限的概念Linux权限管理文件访问者的分类&#xff08;人&#xff09;文件类型和访问权限&#xff08;事物属性&#xff09;文件权限值的表示方法文件访问权限的相关设置方法 目录的权限粘滞位 shell命令以及运行…

备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析(持续)

多做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一&#xff0c;通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c;可以通过真题查漏补缺&#xff0c;更有针对性的补齐知识的短板。 今天我们继续…

PostgreSQL基本使用Schema

参考文章&#xff1a;PostgreSQL基本使用&#xff08;3&#xff09;Schema_pg数据库查询schema-CSDN博客 PostgreSQL 模式&#xff08;Schema&#xff09;可以理解为是一个表的集合&#xff08;或者所属者&#xff09;。 例如&#xff1a;在 MySQL 中&#xff0c;Scheam 是库&…

HLS视频加密,让您的视频内容更安全!

背景介绍 HLS视频加密是一种基于HTTP Live Streaming&#xff08;HLS&#xff09;协议的加密技术。它的核心思想是将视频切片进行加密处理&#xff0c;在客户端播放时需要先获取解密密钥才能正常偶发。通过这种方式&#xff0c;HLS加密可以有效防止未经授权的第三方窃取视频内…

LLM大模型的7种推理框架分析

LLM的7种推理框架 Hugging Face的transformers 这是一个Python库&#xff0c;可以简化本地运行LLM的过程。 Transformers的优点&#xff1a; 自动模型下载提供代码片段非常适合实验和学习 Transformers的缺点&#xff1a; 需要对ML和NLP有深入了解需要编码和配置技能 2.L…

深度学习之基于Tensorflow低光增强的深层Retinex分解

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 在图像处理领域&#xff0c;低光照环境下的图像增强是一个具有挑战性的问题。为了提高图像的可…

纽曼新品X1000:轻巧便携仅重9.9公斤的1度电应急电源

在户外救援行动和应急设备中&#xff0c;电力供应的稳定性和安全性直接影响到救援工作的效率和成功率。在现代救援工作中&#xff0c;常见的光学声波探测仪、通信联络设备、气象检测仪、生命探测仪、照明设备等装备均需有持续的电力供应&#xff0c;才能保障救援工作的有序开展…

西门子WINCC8.0VBS脚本学习讲解

WinCC VBS脚本置位/复位/取反 二进制变量 "TAG1_BOOL1" 进行置位复位取反操作 步骤&#xff1a;按钮-->对象属性-->事件-->单击鼠标VBS动作填入代码如下: 对二进制变量进行复位 对二进制变量进行置位 对二进制变量进行取反 VBS脚本数学运算/读写批处理 …

第十六讲:数据在内存中的存储

第十六讲&#xff1a;数据在内存中的存储 1.整数在内存中的存储1.1存储方式1.2大小端字节序1.3大小端字节序排序规则1.4为什么要有大小端1.5练习1.5.1练习11.5.2练习21.5.3练习31.5.4练习41.5.5练习51.5.6练习61.5.7练习7 2.浮点数在内存中的存储2.1练习2.2浮点数的存储2.3浮点…

如何将数据从一部手机传输到另一部手机[安全快速]

概括 手机之间无需使用蓝牙即可传输文件&#xff0c;配合专业的文件传输工具更高效。本文将向您介绍几种使用不同的数据传输工具快速安全地将数据从一部手机传输到另一部手机的方法&#xff0c;特别是当有大文件或大量文件时。现在&#xff0c;我们来看看。 需要在朋友或家人之…

Rust 赋能前端 -- 写一个 File 转 Img 的功能

所有耀眼的成绩,都需要苦熬,熬得过,出众;熬不过,出局 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 Rustwasm-bindgen/js-sys/web-sysWeb WorkerWebAssemblyWebpack/Vite配置WebAssemblyOffscreenCanvas脚手架生成项…

校园二手书交易|基于SprinBoot+vue的校园二手书交易管理系统(源码+数据库+文档)

校园二手书交易管理系统 目录 基于SprinBootvue的校园二手书交易管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3 卖家用户功能模块 4 用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…