初出茅庐的小李博客之用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

相关文章

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me