当前位置: 首页 > news >正文

开源 Linux 服务器与中间件(十)Mqtt协议和Emqx服务器安装测试

      文章的目的记录所使用的的Linux服务器和中间件的配置和使用,防止时间太长忘记,进行重复工作。

 相关链接:

开源 Linux 服务器与中间件(一)基本介绍

开源 Linux 服务器与中间件(二)嵌入式Linux服务器和中间件

开源 Linux 服务器与中间件(三)服务器--Nginx

开源 Linux 服务器与中间件(四)服务器--Tomcat

开源 Linux 服务器与中间件(五)服务器--Boa

开源 Linux 服务器与中间件(六)服务器--Lighttpd

开源 Linux 服务器与中间件(七)数据库--MySQL

开源 Linux 服务器与中间件(八)数据库--MariaDB

开源 Linux 服务器与中间件(九)数据库--SQLite3

开源 Linux 服务器与中间件(十)Mqtt协议和Emqx服务器安装测试

开源 Linux 服务器与中间件(十一)Emqx服务器消息的订阅和发送(mqtt测试)

推荐链接:

linux C 语言开发 (一) Window下用gcc编译和gdb调试

linux C 语言开发 (二) VsCode远程开发 linux

linux C 语言开发 (三) 建立云服务器

linux C 语言开发 (四) linux系统常用命令

linux C 语言开发 (五) linux系统目录结构

linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)

linux C 语言开发 (七) 文件 IO 和标准 IO

linux C 语言开发 (八) 进程基础

linux C 语言开发 (九) 进程间通讯--管道

linux C 语言开发 (十) 进程间通讯--信号

linux C 语言开发 (十一) 进程间通讯--共享内存

linux C 语言开发 (十二) 进程间通讯--消息队列

Linux C到Android App开发推荐链接(入门十二章):

开源 java android app 开发(一)开发环境的搭建_csdn 开源 java android app-CSDN博客

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

linux C到.net mvc开发推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客、

内容:Mqtt协议的功能和用途,Emqx服务器的功能和应用。

目录

1.Mqtt协议的功能和用途

2.Emqx服务器的功能和应用

3.Emqx服务器的安装,测试。

一、Mqtt协议的功能和用途

MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅模式的消息传输协议,专门为低带宽、高延迟或不稳定的网络环境设计。

📋 MQTT核心功能特性

1. 发布/订阅模式

  • 解耦通信:消息发布者和订阅者不需要知道彼此的存在

  • 一对多通信:单个发布者可以向多个订阅者广播消息

  • 主题过滤:通过主题层级结构实现灵活的消息路由

2. 三种服务质量等级

# MQTT QoS级别
QoS_0 = 0  # 最多交付一次(可能丢失)
QoS_1 = 1  # 至少交付一次(可能重复)
QoS_2 = 2  # 恰好交付一次(最可靠)

3. 持久会话与离线消息

  • Clean Session:清除之前的订阅状态

  • 持久化会话:服务器保存客户端的订阅信息和离线消息

  • 遗嘱消息:客户端异常断开时自动发送预设消息

4. 轻量级设计

  • 最小化协议头:仅2字节固定头部

  • 减少网络开销:适合带宽受限环境

  • 低功耗:适合电池供电设备

🎯 MQTT主要应用场景

1. 🌍 物联网应用

智能家居
应用示例:- 智能灯光控制:topic: "home/living-room/light/switch"- 温度监控:topic: "home/bedroom/temperature"- 安防报警:topic: "home/security/door-sensor"- 家电控制:topic: "home/kitchen/appliance/status"

优势

  • 设备资源消耗低

  • 支持大量并发连接

  • 网络波动适应性强

工业物联网
典型应用:- 设备遥测:topic: "factory/line1/machineA/telemetry"- 预测性维护:topic: "plant/sensor/vibration/alert"- 远程控制:topic: "remote/valve/control"- 数据采集:topic: "sensor/temperature/#"

2. 🚗 车联网与智能交通

实时车辆监控

据发布示例 topics = { "gps": "fleet/vehicle001/gps", "speed": "fleet/vehicle001/speed", "fuel": "fleet/vehicle001/fuel", "diagnostic": "fleet/vehicle001/diagnostic" }

应用场景

  • 车队管理系统

  • 实时位置跟踪

  • 车辆状态监控

  • 远程诊断和维护

3. 💻 移动应用与即时通讯

聊天应用

// 聊天室主题设计
const chatTopics = {userStatus: 'chat/room1/user/status',messages: 'chat/room1/messages',typing: 'chat/room1/typing'
};
推送通知
  • 新闻推送

  • 社交网络更新

  • 实时游戏状态同步

4. 🏥 医疗健康领域

远程患者监护
医疗设备主题:- 生命体征: "patient/room101/vitals/heart_rate"- 设备状态: "medical/device/infusion-pump/status"- 紧急警报: "hospital/emergency/cardiac-alert"- 位置跟踪: "staff/doctor001/location"

优势

  • 实时数据传输

  • 低延迟告警

  • 可靠的连接保证

5. 🌱 农业与环境监测

智慧农业
# 农业传感器主题
agriculture_topics = ["farm/section1/soil/moisture","greenhouse/temperature", "weather/wind-speed","irrigation/valve/control"
]

6. 🔋 能源管理

智能电网
能源管理应用:- 智能电表: "smartgrid/meter/consumption"- 太阳能监控: "solar/panel/output"- 负载平衡: "grid/load/balancing"- 电价信息: "energy/pricing/real-time"

⚡ MQTT与其他协议的对比

特性MQTTHTTPCoAP
协议模式发布/订阅请求/响应请求/响应
头部大小2字节100+字节4字节
功耗极低极低
可靠性中等
实时性优秀一般优秀

🔧 MQTT服务器选择

主流MQTT Broker

  1. EMQX - 高并发,企业级功能丰富

  2. Mosquitto - 轻量级,适合资源受限环境

  3. HiveMQ - 商业版,企业级特性

  4. AWS IoT Core - 云服务,免运维

💡 选择MQTT的考量因素

适合使用MQTT的场景:

✅ 设备到云端的通信
✅ 网络条件不稳定的环境
✅ 大量设备需要同时连接
✅ 实时性要求高的应用
✅ 设备资源受限(功耗、计算、存储)

不适合使用MQTT的场景:

❌ 点对点请求/响应模式
❌ 需要复杂查询的场景
❌ 大数据批量传输
❌ 已有成熟HTTP/REST架构的系统

📊 成功案例参考

实际应用

  • Facebook Messenger - 早期版本使用MQTT进行消息传递

  • AWS IoT - 基于MQTT协议的物联网平台

  • 宝马ConnectedDrive - 车辆远程信息服务

  • 阿里巴巴IoT平台 - 大规模设备连接管理

二、Emqx服务器的功能和应用

EMQX 是一款高性能的分布式物联网 MQTT 消息服务器,致力于为物联网设备提供可靠的实时消息传输和设备连接解决方案-1。它凭借其强大的功能,在全球拥有众多企业用户,并连接了超过1亿台物联网设备-1。

下面这个表格汇总了EMQX的核心功能及其典型应用场景,帮助你快速了解:

核心功能 💡应用场景 🎯
海量设备连接与多协议接入-1智能家居-2
高可靠消息路由与低延迟传输-1车联网-2
强大的规则引擎与数据集成-1工业物联网-5
安全保障与访问控制-1实时网页应用-6
管理与监控运维-1AI大模型数据流-6

🔧 EMQX核心功能详解

  • 海量连接与多协议支持:EMQX 单节点支持500万 MQTT 设备连接,集群可扩展至1亿并发连接-1。除了完整支持 MQTT 3.x/5.0 协议,它还通过多协议网关支持 WebSocket-1、QUIC-1、CoAP-1、LwM2M-7 等多种物联网协议,并能将非MQTT协议转换到MQTT消息模型-7,方便连接各类异构设备。

  • 可靠消息路由与低延迟传输:EMQX 支持完整的 MQTT 发布/订阅模式和多级 QoS(服务质量) 机制-1,确保消息可靠传递-1,并能实现毫秒级的低延迟消息交付-1。

  • 规则引擎与数据集成:EMQX 内置了强大的基于SQL的规则引擎-1,可以实时地提取、过滤、转换和处理物联网数据-1。同时,它提供了开箱即用的数据集成能力,能够将设备数据无缝对接至 40多种后端系统,包括 Kafka、MySQL、InfluxDB 等数据库和云服务-1,实现数据的持久化和进一步分析。

  • 全面的安全保障:EMQX 提供TLS/SSL加密传输-1,并内置了多重客户端认证机制(如用户名密码、JWT、X.509证书等)和灵活的基于主题的访问控制(ACL)-1,保障设备连接与数据交互的安全。

  • 便捷的运维监控:通过直观的 Web Dashboard,你可以轻松地监控集群状态、管理客户端连接与订阅、配置规则-1,并进行问题诊断-1。此外,它还支持将监控指标集成到 Prometheus 等外部系统中-1。

🚀 EMQX的部署模式

EMQX 提供了灵活的部署选项以适应不同需求:

  • 自托管模式(EMQX 企业版):适合需要在自有基础设施上部署的场景,提供最完整的功能和高度的控制权-1。

  • 云服务模式(EMQX Platform):提供全托管的 MQTT 云服务,包括 Serverless 和专有版两种形态-2,可以帮助你快速开始使用而无需管理底层设施-2,并能够按需伸缩-2。

三、Emqx服务器的安装,测试。

1.下载 emqx-enterprise-6.0.0-ubuntu24.04-amd64.deb

wget https://www.emqx.com/zh/downloads/enterprise/6.0.0/emqx-enterprise-6.0.0-ubuntu24.04-amd64.deb

2.安装

sudo apt install ./emqx-enterprise-6.0.0-ubuntu24.04-amd64.deb

3.启动

sudo systemctl start emqx
sudo systemctl status emqx

1. 检查端口监听

EMQX启动后会监听多个端口,使用以下命令检查-9:

netstat -tunlp | grep emqx

你应该能看到类似以下的输出,表明EMQX正在监听关键端口:

  • 1883:MQTT TCP协议端口-6

  • 8083:MQTT over WebSocket端口-6

  • 8084:MQTT over WebSocket with SSL端口-6

  • 18083:EMQX Dashboard管理控制台端口-3

由于我用的是云主机

打开端口

# 开放 MQTT 默认端口
sudo ufw allow 1883/tcp# 开放 Dashboard 管理界面端口
sudo ufw allow 18083/tcp# 如果你需要使用加密连接,可以同时开放以下端口
sudo ufw allow 8883/tcp
sudo ufw allow 8083/tcp
sudo ufw allow 8084/tcp

2. 访问Dashboard管理控制台

  1. 打开浏览器,输入 http://你的服务器IP:18083

  2. 使用默认用户名 admin 和密码 public 登录-9。

  3. 首次登录后,系统会提示修改默认密码,建议你修改以提高安全性-9。

登录成功后,你可以在Dashboard上查看客户端连接数、消息吞吐量等监控信息

http://www.dtcms.com/a/519452.html

相关文章:

  • 网站建设实践鉴定手机网站建设讯息
  • 网站管理文档怎么写晚上睡不着看点害羞的东西app
  • uni-app 广告弹窗最佳实践:不扰民、可控制频次、含完整源码
  • 使用eNSP模拟器搭建网络拓扑结构(笔记2):从 0 到 1 掌握华为网络仿真
  • UniApp 多页面编译优化:编译时间从10分钟到1分钟
  • C++变量与函数命名规范技术指南 (基于华为编码规范与现代C++最佳实践)
  • ELK1——elasticsearch
  • 【图像卷积基础】卷积过程卷积实现通道扩充与压缩池化Pooling原理和可视化
  • 杭州公司网站设计外贸手工做兼职的网站
  • 深入浅出Langchain4j——构建Java大语言模型应用的新范式
  • Babylon.js学习之路《添加自定义摇杆控制相机》
  • 【JAVA 进阶】SpringBoot集成Sa-Token权限校验框架深度解析
  • 【CMakeLists.txt】Qt6 依赖配置详解
  • 用js做网站登录网页成品
  • 数据库安全网关:从“看得见访问”到“控得住风险”的关键一层
  • 对泊松过程的理解
  • 【数论】质数筛(埃氏筛、欧拉筛)
  • 扩展名网站兰州做网站一咨询兰州做网站公司
  • 华为OD-Java面经-21届考研
  • Excel拆分和合并优化版本
  • 智能网联汽车:当汽车遇上“智慧网络”
  • 常规点光源在工业视觉检测上的应用
  • C++新特性——正则表达式
  • 基于卷积神经网络的汽车类型识别系统,resnet50,vgg16,resnet34【pytorch框架,python代码】
  • 设计 企业网站电脑系统网站建设
  • 做网站业务的怎么找资源网站推广名片
  • FPGA强化- HDMI显示器驱动设计与验证
  • 【PPT-ungroup PPT解组合,python无水印】
  • Java 17 环境下 EasyPoi 反射访问异常分析与解决方案(ExcelImportUtil.importExcelMore)
  • SpringBoot+alibaba的easyexcel实现前端使用excel表格批量插入