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

本文主要是介绍初出茅庐的小李博客之用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客户端进行数据的通信测试。

这篇关于初出茅庐的小李博客之用MQTT.fx软件进行消息发布与订阅【 基于EMQX Cloud】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001750

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

SpringBoot 自定义消息转换器使用详解

《SpringBoot自定义消息转换器使用详解》本文详细介绍了SpringBoot消息转换器的知识,并通过案例操作演示了如何进行自定义消息转换器的定制开发和使用,感兴趣的朋友一起看看吧... 目录一、前言二、SpringBoot 内容协商介绍2.1 什么是内容协商2.2 内容协商机制深入理解2.2.1 内容

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑