搭建mqtt服务端并在Spring Boot项目中集成mqtt

文章目录

  • 一、MQTT
    • 1.MQTT 的特点
    • 2.MQTT 的工作原理
    • 3.MQTT 的应用场景
  • 二、EMQX(服务端)
    • 1.EMQX 的特点
    • 2.安装
  • 三、客户端
    • 1.MQTTX
    • 2.EMQX后台建客户端
    • 3.H5页面客户端
    • 4.Spring Boot集成mqtt做客户端

一、MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的消息传输协议,设计用于在低带宽、高延迟或不可靠的网络连接下,实现设备之间的通信。MQTT 协议最初由 IBM 在 1999 年开发,现在已经成为物联网(IoT)领域广泛使用的通信协议之一。

1.MQTT 的特点

  1. 发布/订阅模式:MQTT 使用发布/订阅消息模式,允许客户端发布消息到主题(topics),并订阅感兴趣的主题。这种模式解耦了发布者和订阅者,使得系统更加灵活和可扩展。
  2. 轻量级:MQTT 协议的设计目标是简单和高效,具有较小的消息开销,适用于资源受限的设备,如传感器和嵌入式系统。
  3. QoS 级别:MQTT 支持不同的服务质量(QoS)级别,包括“最多一次”(At most once)、“至少一次”(At least once)和“正好一次”(Exactly once),以满足不同的可靠性需求。
  4. 保留消息:MQTT 允许发布保留消息,这些消息在订阅者连接时会立即发送,确保订阅者能够获取最新的状态信息。
  5. 离线消息:MQTT 代理可以保存订阅者的离线消息,并在订阅者重新连接时发送给它们。

2.MQTT 的工作原理

MQTT 网络由 MQTT 代理(broker)和 MQTT 客户端组成。

  • MQTT 代理(Broker):负责接收来自客户端的消息,并将这些消息转发给订阅了相应主题的客户端。代理是消息的中心枢纽,管理主题订阅和消息分发。
  • MQTT 客户端(Client):可以连接到代理,发布消息到主题,以及订阅感兴趣的主题以接收消息。客户端可以是设备、传感器、应用程序等。

3.MQTT 的应用场景

  1. 物联网(IoT):在物联网中,MQTT 广泛用于设备之间的通信,实现设备状态监控、远程控制、数据采集等功能。
  2. 移动应用:MQTT 适用于移动应用,因为它具有低带宽和低功耗的特点,可以减少数据使用并延长电池寿命。
  3. 实时通信:在需要实时数据传输的场景中,如股票市场、社交网络更新等,MQTT 可以提供快速的消息传递。
  4. 远程监控和自动化:在工业自动化、智能家居、远程监控等领域,MQTT 用于设备之间的通信和控制。

二、EMQX(服务端)

EMQX 是一个高性能的 MQTT 消息服务器,由 EMQ(上海创센智能科技有限公司)开发。EMQX 旨在提供一个可扩展、高可用和易于管理的 MQTT broker,适用于大规模物联网应用。

1.EMQX 的特点

  1. 高性能:EMQX 能够处理大量的并发连接和高吞吐量的消息传输,适用于大规模物联网部署。
  2. 可扩展性:支持集群模式,可以水平扩展以应对不断增加的负载。
  3. 安全性:提供多种安全功能,包括TLS/SSL 加密、访问控制、认证授权等,保护数据传输和系统安全。
  4. 灵活性:支持多种消息协议,除了 MQTT 之外,还支持 HTTP、CoAP、LwM2M 等,满足不同设备和应用的需求。
  5. 管理工具:提供丰富的管理工具和API,方便监控、管理和集成到现有系统中。
  6. 云原生支持:EMQX 适合在容器化和云环境中部署,支持 Kubernetes 等容器编排工具。

2.安装

这里我用的是windows版本

参考:

https://blog.csdn.net/xiaolong1126626497/article/details/134280836

https://blog.csdn.net/qq_37165235/article/details/138193161

windows版本: 链接: https://pan.baidu.com/s/1_uYkOz76tWEm99MmxHyOdg?pwd=2vsg 提取码: 2vsg

安装好后访问 ip:18083 即可进入后台如下图所示:

在这里插入图片描述

三、客户端

1.MQTTX

这个是EMQX官方的客户端工具

下载地址 https://mqttx.app/zh

安装后配置好即可连接到前面安装的emqx服务器,如下图所示

在这里插入图片描述

2.EMQX后台建客户端

如下图所示,在后台也可以直接建立客户端连接,测试发布订阅

在这里插入图片描述

3.H5页面客户端

参考:

https://blog.csdn.net/qq_37165235/article/details/138193161

项目地址:https://gitee.com/neil-xu/mqtt-test-html.git

效果:

在这里插入图片描述

4.Spring Boot集成mqtt做客户端

参考:

https://blog.csdn.net/qq_42862247/article/details/125536672?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-125536672-blog-144117489.235v43pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.1&utm_relevant_index=3

项目地址:https://gitee.com/neil-xu/mqtt-demo.git

效果:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Easysearch Java SDK 2.0.x 使用指南(一)

各位 Easysearch 的小伙伴们,我们前一阵刚把 easysearch-client 更新到了 2.0.2 版本!借此详细介绍下新版客户端的使用。 新版客户端和 1.0 版本相比,完全重构,抛弃了旧版客户端的一些历史包袱,从里到外都焕然一新&am…

《计算机视觉证书:开启职业发展新航道》

一、引言 在当今科技飞速发展的时代,计算机视觉技术正以惊人的速度改变着我们的生活和工作方式。从智能手机的人脸识别解锁到自动驾驶汽车的环境感知,计算机视觉技术的应用无处不在。而计算机视觉证书作为这一领域的专业认证,其作用愈发凸显…

ubuntu 用 ss-tproxy的最终网络结构

1、包含了AD广告域名筛选 2、Ss-tproxy 国内国外地址分类 3、chinadns-ng解析 4、透明网关 更多细节看之前博客 ubuntu 用ss-TPROXY实现透明代理,基于TPROXY的透明TCP/UDP代理,在 Linux 2.6.28 后进入官方内核。ubuntu 用 ss-tproxy的内置 DNS 前挂上 AdGuardHome…

OpenCV相关函数

一、二值化函数(threshold) 功能:将灰度图像转换为二值图像,通常用于图像分割。通过设置阈值,把图像中低于阈值的像素设为0,高于阈值的像素设为1。 参数: src:输入图像。 thresh&a…

前端html,vue使用第三方地图详细教程,以百度地图为例,实现地图标注,导航,定位,路线规划,坐标转换

目录 示例: 准备: ?编辑 开始: 1、新建页面,在script标签中引入百度地图的api数据,把自己在控制台创建的应用的ak替换上去 2、创建一个dom对象,设置宽高 3、在js中初始化地图 进阶: 1…

【经验分享】容器云搭建的知识点

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…

【Liunx篇】基础开发工具 - vim

文章目录 一.vim的基本概念1.正常/命令模式2.插入模式3.底行模式/末行模式4.视图模式5.替换模式 二.vim的基本操作1.进入vim:2.退出vim: 三.vim正常模式命令集1.光标定位:2.复制/粘贴3.撤销4.剪切/删除5. 更改 四.vim底行模式命令集1.保存/退出2.调出行号…

数据结构---树(Tree)

1. 简介 在数据结构中,树是一种层次结构的数据结构,由节点(node)组成,其中每个节点通过边(edge)与其他节点连接。树是一种非线性的数据结构,广泛用于表示具有层级关系的数据。常见的…

【unity】从零开始制作平台跳跃游戏--界面的认识,添加第一个角色!

在上一篇文章中,我们已经完成了unity的环境配置与安装⬇️ 【Unity】环境配置与安装-CSDN博客 接下来,让我们开始新建一个项目吧! 新建项目 首先进入unityHub的项目页面,点击“新项目”: 我们这个系列将会以2D平台…

Ubuntu K8s

https://serious-lose.notion.site/Ubuntu-K8s-d8d6a978ad784c1baa2fc8c531fbce68?pvs74 2 核 2G Ubuntu 20.4 IP 172.24.53.10 kubeadmkubeletkubectl版本1.23.01.23.01.23.0 kubeadm、kubelet 和 kubectl 是 Kubernetes 生态系统中的三个重要组件 kubeadm: 主…

【ARM】ARM架构麒麟V10安装jdk1.8

ARM架构麒麟V10安装jdk1.8,就一句话安装 yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel 关注我,继续【ARM】安装mysql 简单快捷。

Redis--高并发分布式结构

目录 一、引言 二、redis 1.什么是redis? 三、基础概念 1.什么是分布式? 2.应用服务和数据库服务分离 3.负载均衡 4.分库分表 5.微服务架构 四、总结 一、引言 本篇文章就简单介绍一下什么是redis,以及一些关于高并发和分布式结构的…

Repo管理

文章目录 前言Repo介绍清单仓库清单仓库的组成 初始化Repo同步远程仓库Repo实际应用 前言 我们知道,Git是用来管理某一个仓库,那当一个项目用到了多个仓库时,怎么来同步管理这些仓库呢?这个时候就可以引入Repo管理。 Repo介绍 …

python 数据分析之地图数据绘制

python 数据分析之地图数据绘制 1、根据历史的2023年GDP数据做地图分析 import numpy as np import matplotlib import matplotlib.pyplot as plt matplotlib.rcParams[font.family] SimHei import pandas as pd import folium from folium import Map import geopandas as…

分治算法(单选题)

2-1 分数 2 下列多少种排序算法用了分治法? 堆排序插入排序归并排序快速排序选择排序希尔排序 A.2 B.3 C.4 D.5 正确答案 A 2-2 分数 2 分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决问题,最后将子…

探索 HTTP 请求头中的 “Host” 字段及其安全风险

探索 HTTP 请求头中的 “Host” 字段及其安全风险 大家好,今天我们来聊聊 HTTP 请求头中的“Host”字段,以及它的使用方法和安全风险。 什么是Host字段 在 HTTP 请求头中,“Host”字段是一个至关重要的部分。它告诉服务器,我们…

将 Ubuntu 22.04 LTS 升级到 24.04 LTS

Ubuntu 24.04 LTS 将支持 Ubuntu 桌面、Ubuntu 服务器和 Ubuntu Core 5 年,直到 2029 年 4 月。 本文将介绍如何将当前 Ubuntu 22.04 系统升级到最新 Ubuntu 24.04 LTS版本。 备份个人数据 以防万一,把系统中的重要数据自己备份一下~ 安装配置SSH访问…

渗透测试-前端验签绕过之SHA256

本文是高级前端加解密与验签实战的第1篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过SHA256签名来爆破登录。 绕过 通过查看源代码可以看到key为 1234123412341234通过查看源代码可以看到是通过SHA256来进行签名的&#xff0…

解锁医学数据分析新姿势:堆叠图的奇妙世界

在医学数据分析中,数据的可视化是一个非常重要的环节。通过图形展示,我们可以更直观地理解数据之间的关系和趋势。今天,我们将介绍一种非常有用的图形——堆叠图(Stacked Bar Chart),并展示如何在Python中使…

接口测试Day01-HTTP请求

概念 接口:系统之间(外部系统与内部系统,内部系统与内部系统)数据交通的通道。 接口测试:校验 接口回发的 响应数据 与 预期结果 是否一致。 接口测试,可以绕过前端界面。直接对 服务器进行测试&#xff01…