mqtt学习笔记(一)
以解决问题方式逐步学习探索
- mqtt使用场景
- mqtt可能缺点
- mqtt学习疑问探索
- 1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?
- 2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?
- 3、mqtt的client掉线重连后,如何保证掉线期间的消息能被消费到?
- 4、mqtt客户端订阅的消息能保证按序消费吗?
- 5、mqtt客户端能订阅自己发布的主题消息吗?
- 6、mqtt设置QoS=2还有必要在业务端判重吗?
- 7、mqtt协议服务端支持的最大连接数?
- 8、mqtt服务器控制台?
- 9、mqtt中的普通消息、保留消息、遗嘱消息区别?
- 10、消息默认是否过期,能否设置过期时间?
- 11、支持延迟发布?
- 12、用户属性?
- 13、共享订阅?
- 14、排它订阅?
- 15、自动订阅?
- 16、主题通配符?
mqtt使用场景
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,特别适用于资源受限的设备(内存小)和网络环境较差(低带宽、降低网络流量成本)的场景。适用于物联网(IoT)设备之间的通信,常用于发布/订阅模式的消息传输。
mqtt可能缺点
不适合大数据量传输、缺乏复杂的事务处理、消息顺序不保证、依赖中间代理
mqtt学习疑问探索
1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?
针对普通消息不能,只能消费新发布的普通消息;
保留消息(retained messages)例外,有些设备上线要知道最新的设备状态等
2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?
可以配置成自动连接或手动连接。
连接后,订阅的topic配置不存在了,确实需要重新订阅之前的主题
3、mqtt的client掉线重连后,如何保证掉线期间的消息能被消费到?
可以设置会话不被清空,会话清空的话,就消费不到掉线期间产生的消息了。
参考方法setCleanSession(true or false)
4、mqtt客户端订阅的消息能保证按序消费吗?
得考虑是否支持QoS2配置、能否按序生产、能否按序消费
5、mqtt客户端能订阅自己发布的主题消息吗?
可以
6、mqtt设置QoS=2还有必要在业务端判重吗?
保守、严谨来说,业务侧还是很有必要进行判重。
主要是因为消息消费后,在最后的确认机制未成功反馈结果时(极端情况下手动确认时,网络异常、系统故障等),消息还是可能被重复进行消费
7、mqtt协议服务端支持的最大连接数?
具体看选择的mqtt协议中间件类型、服务器配置、压测等情况…
8、mqtt服务器控制台?
看具体使用的mqtt协议中间件
9、mqtt中的普通消息、保留消息、遗嘱消息区别?
保留消息可以在新客户端订阅时,推送;
遗嘱消息是客户端连接时指定的消息,可以在broker监测离线时,推送告知给其他订阅的客户端
10、消息默认是否过期,能否设置过期时间?
发布后broker存储,默认不过期,普通消费消费后自动删;
可以设置过期时间,过期不消费会被清掉,不会再推送消费
11、支持延迟发布?
支持,即可提前发布消息在broker服务端留存,达到一定的延迟时间,再推送到订阅的客户端去消费
12、用户属性?
可以在发送消息时,指定用户属性(有点类似于设置http接口的请求头参数)
13、共享订阅?
mqtt5.0支持,即共享订阅后,同一主题的多个客户端可以负载均衡处理消息。
在普通的订阅中,我们每发布一条消息,所有匹配的订阅端都会收到该消息。当某个订阅端的消费速度无法跟上消息的生产速度时,我们没有办法将其中一部分消息分流到其他订阅端中来分担压力。这使订阅端容易成为整个消息系统的性能瓶颈。
14、排它订阅?
一个主题当前仅能存在一个订阅者,在当前订阅者未取消订阅前,其他订阅者都将无法订阅该主题。
15、自动订阅?
自动订阅能够给 EMQX 设置多个规则,在设备成功连接后按照规则为其订阅指定主题,不需要额外发起订阅。
16、主题通配符?
支持通配符规则设置,主要用于客户端一次订阅多个主题
相关文章:
mqtt学习笔记(一)
以解决问题方式逐步学习探索 mqtt使用场景mqtt可能缺点mqtt学习疑问探索1、mqtt主题发布过的历史消息,全新连接的client能消费到吗?2、mqtt的client掉线如何重连,重连后订阅的topic配置还在不?3、mqtt的client掉线重连后ÿ…...
Kafka Eagle 安装教程
目录 前言 一、安装前的准备 1. 系统要求 2. 安装 JDK 3. 安装 Kafka 和 Zookeeper 4. MySQL 环境准备 二、下载并安装 Kafka Eagle 三、配置 Kafka Eagle 1. 编辑配置文件 2. 配置 Kafka 和 Zookeeper 信息 四、启动 Kafka Eagle 五、访问 Kafka Eagle 六、测试功…...

Ajax 获取进度和中断请求
HTML加入一些内容方便看效果和做交互: <div><p>当前传输进度:<span id"progress">0%</span></p><button id"send">发送</button><button id"btn">中断</button> …...

实验5:网络设备发现、管理和维护
实验5:网络设备发现、管理和维护 实验目的及要求: 通过实验,掌握Cisco 路由器和交换机的IOS配置管理。自动从NTP服务器获取时间信息。能够利用TFTP服务器实现路由器和交换机配置文件的备份和恢复。同时验证CDP协议和LLDP协议的网络参数。完…...

kafka 生产经验——数据积压(消费者如何提高吞吐量)
bit --> byte --> kb -->mb -->gb --> tb --> pb --> eb -> zb -->yb...
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍
对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)介绍 对等同步身份认证(Simultaneous Authentication of Equals,简称SAE)是一种基于密码的身份验证方法,用于安全地交换密钥…...

Ajax 与 Vue 框架应用点——随笔谈
老式 在老式的技术中,一个网页通常由前端工程师直接使用 HTML、CSS、JavaScript 编写而成 这种方式的优点很明显:简单粗暴,方便工程师以简单的思维完成工作 当然,缺点也很明显,包括但不限于: 直接原生开发…...

The Internals of PostgreSQL 翻译版 持续更新...
为了方便自己快速学习,整理了翻译版本,目前翻译的还不完善,后续会边学习边完善。 文档用于自己快速参考,会持续修正,能力有限,无法确保正确!!! 《The Internals of PostgreSQL 》 不是 《 PostgreSQL14 Internals 》…...

redis 原理篇 31 redis内存回收 内存淘汰策略
哦哦, 内存满了咋搞 就算过期key 删除,还是不够用, 这种问题没办法,只能了解一下啥解决方案了, 内存是有限的,一直存,肯定会满,这时,咋处理? 首先ÿ…...

微信小程序——实现二维码扫描功能(含代码)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

【go从零单排】HTTP客户端和服务端
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,net/http 包提供了强大的 HTTP 客户端和服务器功能。 &…...
Android 配置默认输入法
1.背景 最近有个国内的项目,预制了输入法apk,但是无法调出软键盘。原因是没有配置默认输入法,本文主要记录下如何配置默认输入法。 2.代码设置 设置默认输入法需要配置Settings.Secure.ENABLED_INPUT_METHODS和Settings.Secure.DEFAULT_IN…...
交易术语汇总(Technical Trading Dictionary)
Arbitrage (套利) --- 一种利用交易所之间的差价获利的方法。 Accumulation (累积) --- 在一种资产中建立头寸的过程。 Ask/Bid (询价/竞价) --- 卖出订单是询价(Ask),买入订单是出价(Bid)。 ATH(历史最高价) --- All-time high 全时高。 Bearish MS…...

【Docker】Docker基础及docker-compose
一、Docker下载 更新yum包 yum update 安装需要的软件包( yum-util 提供yum-config-manager功能,后两个是devicemapper驱动依赖) yum install -y yum-utils device-mapper-persistent-data lvm2 设置stable镜像仓库(使用阿里…...
从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅20241111
从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅 作为一名 AI 初学者,我最近完成了一个意义非凡的项目:在 Hugging Face Spaces 上构建了一个简单却实用的在线 SQL 查询工具。这个项目不仅让我了解了 Hugging Face 平台的核心功…...

让AI为你发声!Windows电脑快速部署ChatTTS文本转语音神器
文章目录 前言1. 下载运行ChatTTS模型2. 安装Cpolar工具3. 实现公网访问4. 配置ChatTTS固定公网地址 前言 嘿,朋友们!今天我们来聊聊如何在Windows系统上快速搭建ChatTTS,一个超酷的开源文本转语音项目。更棒的是,我们还可以用Cp…...

【AI换脸整合包及教程】FaceFusion 3.0.0:AI换脸技术的革新之旅
在人工智能技术的飞速发展中,AI换脸技术成为了近年来备受瞩目的焦点之一。FaceFusion 3.0.0,作为这一领域的最新力作,不仅继承了前代产品的优点,还在功能和用户体验上进行了全面升级和优化,为用户带来了前所未有的换脸…...
更新对象或数组的值的方法
一、数组的映射或更新 map(): 用于创建一个新数组,数组中的每个元素是对原数组元素执行函数后的结果。 const arr [1, 2, 3]; const newArr arr.map(item > item * 2); // [2, 4, 6]forEach(): 用于遍历数组,对每个元素执行操作,但不返…...

Java线程池浅谈(创建线程池及线程池任务处理)
1-认识线程池 什么是线程池? 线程池就是一个可以复用线程的技术。 不使用线程池的问题 比方说淘宝,不使用线程池,现在有一亿个线程同时进来,CPU就爆了。用户每发起一个请求,后台就需要创建一个新线程来处理…...
Dockerfile的使用
简介 制作docker镜像可以通过修改容器的方式,也通过通过Dockerfile文件的方式,下面通过Dockerfile文件的例子进行说明。 Dockerfile文件 FROM openjdk:8-alpine#ENV http_proxy http://127.0.0.1:7890 #ENV https_proxy http://127.0.0.1:7890#ENV TZ…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...