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

揭秘EMQX消息持久化:实战MySQL存储插件从零到一部署指南

揭秘EMQX消息持久化实战MySQL存储插件从零到一部署指南【免费下载链接】emqx_persistence_plugin项目地址: https://gitcode.com/gh_mirrors/em/emqx_persistence_plugin还在为EMQX消息丢失而烦恼吗每次重启服务都担心数据不翼而飞今天我要带你深度玩转emqx_persistence_plugin——这个能让你的MQTT消息稳稳落地MySQL的神器痛点直击为什么你需要消息持久化想象一下这个场景你的物联网平台连接着上千台设备每秒钟处理着海量的传感器数据。突然EMQX服务器需要重启维护或者意外宕机了...那些在内存中排队等待处理的消息就这样消失了这就是emqx_persistence_plugin要解决的核心问题作为EMQX社区版的持久化增强插件它能把MQTT消息实时写入MySQL数据库让你的数据安全无忧。核心价值不只是存储更是数据洞察实时持久化客户端连接/断开、消息发布等关键事件自动入库⚡零数据丢失即使服务重启历史数据完整保留数据可追溯所有MQTT操作都有完整记录便于审计分析轻量级集成无需改造EMQX核心代码即插即用架构解密emqx_persistence_plugin如何工作让我用文字为你描绘这个插件的内部架构EMQX Broker → Hook事件触发 → 插件处理层 → MySQL数据存储 ↑ ↑ ↑ ↑ 客户端连接 消息发布/订阅 数据格式化 持久化写入核心流程解析客户端连接到EMQX时触发client.connected钩子插件捕获事件提取客户端ID、用户名、IP等信息数据经过格式化处理转换为SQL语句通过连接池批量写入MySQL数据库整个过程异步执行不影响EMQX主线程性能三步实战从零搭建你的持久化系统第一步环境准备与源码获取# 克隆项目到本地 git clone https://gitcode.com/gh_mirrors/em/emqx_persistence_plugin cd emqx_persistence_plugin关键文件速览src/emqx_persistence_plugin.erl- 核心逻辑实现etc/emqx_persistence_plugin.conf- 主配置文件mysql.sql- 数据库表结构定义rebar.config- 项目构建配置第二步数据库初始化执行项目根目录的SQL脚本创建必要的表结构-- 创建客户端连接记录表 CREATE TABLE on_client_connected ( id int(10) unsigned NOT NULL AUTO_INCREMENT, action varchar(32) DEFAULT NULL, node varchar(32) DEFAULT NULL, client_id varchar(256) DEFAULT NULL, username varchar(256) DEFAULT NULL, ip varchar(32) DEFAULT NULL, connected_at varchar(64), PRIMARY KEY (id) ); -- 创建消息发布记录表 CREATE TABLE on_client_publish ( id int(10) unsigned NOT NULL AUTO_INCREMENT, action varchar(32) DEFAULT NULL, node varchar(32) DEFAULT NULL, client_id varchar(256) DEFAULT NULL, username varchar(256) DEFAULT NULL, host VARCHAR(40) DEFAULT NULL, msg_id varchar(32) DEFAULT NULL, topic TEXT, payload TEXT, ts varchar(64), PRIMARY KEY (id) );第三步插件配置与集成编辑etc/emqx_persistence_plugin.conf配置MySQL连接## 启用持久化功能 emqx_persistence_plugin.enable_persistence on ## MySQL连接配置 persistence.mysql.server 127.0.0.1:3306 persistence.mysql.pool 8 persistence.mysql.username your_username persistence.mysql.password your_password persistence.mysql.database mqtt_data ## Hook事件配置 emqx_persistence_plugin.hook.client.connected.1 {action: on_client_connected} emqx_persistence_plugin.hook.message.publish.1 {action: on_message_publish, topic: #}配置的艺术这样配置效率翻倍Hook事件过滤策略想让插件只处理特定主题的消息试试这个高级配置## 只处理以sensor/开头的主题 emqx_persistence_plugin.hook.message.publish.1 { action: on_message_publish, topic: sensor/# } ## 同时处理设备上下线事件 emqx_persistence_plugin.hook.client.connected.1 {action: on_client_connected} emqx_persistence_plugin.hook.client.disconnected.1 {action: on_client_disconnected}性能调优秘籍配置项默认值推荐值说明persistence.mysql.pool816-32连接池大小根据并发量调整persistence.mysql.query_timeout5s10s查询超时时间网络延迟大时增加批处理大小单条可扩展源码中可改为批量插入实战场景智慧工厂数据采集系统场景描述某智能工厂有500台设备每台设备每5秒上报一次状态数据需要确保所有数据不丢失。解决方案配置主题过滤只处理factory/device//status主题优化连接池设置pool 32应对高并发数据分表策略按日期分表存储避免单表过大配置示例emqx_persistence_plugin.hook.message.publish.1 { action: on_message_publish, topic: factory/device//status } persistence.mysql.pool 32 persistence.mysql.query_timeout 15s避坑指南这些雷区千万别踩❌ 常见错误1插件编译失败问题执行make时提示依赖缺失解决确保在EMQX源码目录的apps文件夹中编译插件依赖EMQX核心库❌ 常见错误2MySQL连接超时问题日志显示MySQL connection timeout解决检查网络连通性适当增加query_timeout值❌ 常见错误3数据写入延迟问题高并发时数据写入有延迟解决增大连接池大小考虑使用批量插入优化扩展思考还能玩出什么花样方案一多数据库支持虽然当前只支持MySQL但你可以基于src/emqx_persistence_plugin.erl的架构轻松扩展支持PostgreSQL、MongoDB等数据库方案二数据清洗与转换在on_message_publish/2函数中第80-120行可以添加数据清洗逻辑比如过滤无效数据数据格式转换敏感信息脱敏方案三实时监控集成结合Grafana等监控工具将MySQL中的数据可视化实时监控设备状态和消息流量。性能对比有持久化和没有的区别指标无持久化使用emqx_persistence_plugin数据安全性低重启丢失高永久存储查询能力无支持SQL复杂查询审计能力无完整操作日志性能影响无轻微5%行动起来今天就开始你的持久化之旅不要再让宝贵的数据在内存中裸奔了emqx_persistence_plugin为你提供了最简单、最可靠的MQTT消息持久化方案。立即行动克隆项目git clone https://gitcode.com/gh_mirrors/em/emqx_persistence_plugin创建数据库表执行mysql.sql配置插件编辑etc/emqx_persistence_plugin.conf集成到EMQX按README.md指引操作遇到问题查看test/目录下的测试用例或者参考源码中的详细注释。这个社区驱动的插件虽然简单但功能强大完全能满足大多数物联网项目的持久化需求记住好的架构不是一开始就完美而是在不断演进中变得可靠。从今天开始让你的EMQX数据存储更上一层楼【免费下载链接】emqx_persistence_plugin项目地址: https://gitcode.com/gh_mirrors/em/emqx_persistence_plugin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

揭秘EMQX消息持久化:实战MySQL存储插件从零到一部署指南

揭秘EMQX消息持久化:实战MySQL存储插件从零到一部署指南 【免费下载链接】emqx_persistence_plugin 项目地址: https://gitcode.com/gh_mirrors/em/emqx_persistence_plugin 还在为EMQX消息丢失而烦恼吗?每次重启服务都担心数据不翼而飞&#xf…...

frpc桌面客户端架构演进:从1.0到1.2.4的技术升级之旅

frpc桌面客户端架构演进:从1.0到1.2.4的技术升级之旅 frpc-desktop是一款基于ElectronVue3开发的跨平台内网穿透桌面客户端,它通过可视化界面让用户轻松配置和管理frp代理服务。从最初的1.0版本到当前的1.2.4版本,项目经历了多次重要的架构优…...

internlm2-chat-1.8b效果展示:输入用户语音转写文本,生成专业会议纪要模板

internlm2-chat-1.8b效果展示:输入用户语音转写文本,生成专业会议纪要模板 1. 模型效果惊艳亮相 今天要给大家展示一个特别实用的AI能力——用internlm2-chat-1.8b模型将语音转写的文字内容,自动生成专业的会议纪要模板。这个功能对于经常开…...

5分钟搞定Fun-ASR语音识别:支持方言歌词识别,新手友好

5分钟搞定Fun-ASR语音识别:支持方言歌词识别,新手友好 1. 快速了解Fun-ASR语音识别 Fun-ASR-MLT-Nano-2512是阿里通义实验室推出的轻量级语音识别模型,特别适合需要快速上手的开发者。这个模型最吸引人的地方在于它能识别31种语言&#xff…...

终极frpc-desktop轻量级模式配置指南:大幅降低资源占用的10个技巧

终极frpc-desktop轻量级模式配置指南:大幅降低资源占用的10个技巧 frpc-desktop是一款优秀的跨平台FRP桌面客户端,通过可视化配置轻松实现内网穿透功能。对于需要在低配置设备上长期运行的场景,掌握轻量级模式配置至关重要。本文将为您详细介…...

终极frpc-desktop版本发布checklist:确保质量的10个关键步骤

终极frpc-desktop版本发布checklist:确保质量的10个关键步骤 frpc-desktop是一款FRP跨平台桌面客户端,通过可视化配置帮助用户轻松实现内网穿透。本文将分享确保版本发布质量的10个关键步骤,帮助开发团队打造稳定可靠的桌面应用。 1. 版本号…...

GitFS源码解读:Router、Worker和View三大核心组件分析

GitFS源码解读:Router、Worker和View三大核心组件分析 【免费下载链接】gitfs Version controlled file system 项目地址: https://gitcode.com/gh_mirrors/gi/gitfs GitFS作为一个版本控制文件系统(Version controlled file system)&…...

uniapp安卓调试进阶:用Chrome开发者工具调试手机Webview页面(2023最新版)

Uniapp安卓Webview深度调试指南:Chrome DevTools实战解析 在混合应用开发领域,Uniapp凭借其跨平台优势已成为移动开发的热门选择。但当应用内嵌Webview页面出现样式错乱、接口异常或性能瓶颈时,仅靠基础调试工具往往难以快速定位问题根源。本…...

前端使用AI试水报告俅

1 实用案例 1.1 表格样式生成 本示例用于生成包含富文本样式与单元格背景色的Word表格文档。 模板内容: 渲染代码: # python-docx-template/blob/master/tests/comments.py from docxtpl import DocxTemplate, RichText # data: python-docx-template/bl…...

[AI/Agent/社交] AI Agent社交网络产品:MoltBook => InStreet济

一、Actor 模型:不是并发技巧,而是领域单元 Actor 模型的本质是: Actor 是独立运行的实体 Actor 之间只通过消息交互 Actor 内部状态不可被外部直接访问 Actor 自行决定如何处理收到的消息 Actor 模型真正解决的是: 如何在不共享状…...

如何为MVVM应用编写高质量测试:完整测试策略

如何为MVVM应用编写高质量测试:完整测试策略 【免费下载链接】Android-MVVM-Architecture MVVM Kotlin Retrofit2 Hilt Coroutines Kotlin Flow mockK Espresso Junit5 项目地址: https://gitcode.com/gh_mirrors/mv/Android-MVVM-Architecture 在An…...

从R-JPEG到温度热图:手把手教你用大疆TSDK和Pix4D mapper生成红外正射影像

从R-JPEG到温度热图:大疆TSDK与Pix4D mapper红外正射影像全流程解析 在农业病虫害监测、电力设备巡检、建筑热工缺陷检测等领域,红外热成像技术正逐渐成为行业标配。但单张红外照片的温度分析存在视角局限,而传统热像仪又难以实现大范围精准测…...

丹青识画系统在卷积神经网络上的优化:提升图像特征提取效率

丹青识画系统在卷积神经网络上的优化:提升图像特征提取效率 最近在折腾一个图像识别项目,用到了丹青识画系统。说实话,刚开始部署完,跑起来的效果虽然不错,但那个推理速度实在是让人有点着急,处理一张高清…...

清算波普尔:终结107年学术诈骗的真理清场行动

清算波普尔:终结107年学术诈骗的真理清场行动摘要波普尔通过“名词动量化”将“科学(真理结果)”偷换为“科学探索(试错过程)”,制造了长达107年的学术诈骗。他以“过程即科学”为幌子,用无限试…...

深度研究报告:对波普尔科学史观的批判性剖析——从“爱因斯坦推翻牛顿”到“贾子理论”的解绑革命

深度研究报告:对波普尔科学史观的批判性剖析——从“爱因斯坦推翻牛顿”到“贾子理论”的解绑革命 摘要 本报告深度剖析了针对波普尔科学史观的核心批判。指控波普尔通过编造“爱因斯坦推翻牛顿”的虚假叙事,将理论间的边界扩展恶意曲解为颠覆性革命&a…...

higress 这个中登才是AI时代的心头好纤

核心摘要:这篇文章能帮你 ?? 1. 彻底搞懂条件分支与循环的适用场景,告别选择困难。 ?? 2. 掌握遍历DOM集合修改属性的标准姿势与性能窍门。 ?? 3. 识别流程控制中的常见“坑”,并学会如何优雅地绕过去。 ?? 主要内容脉络 ?? 一…...

波普尔:反教皇的“新教皇”——一场百年认知诈骗的终极揭露

波普尔:反教皇的“新教皇”——一场百年认知诈骗的终极揭露摘要波普尔以“反教皇”自居,实则上演了最隐蔽的学术独裁。他通过偷换“绝对真理”概念,将确定性真理污名化为教皇式专制,再借“可证伪性”自封科学裁判,垄断…...

HagiCode Soul 平台技术解析:从需求萌发到独立平台的演进之路浩

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

Windows11 Camera 存储路径自定义与系统声音录制全攻略

1. Windows11 Camera存储路径自定义详解 每次用Windows11自带的Camera应用拍完照片或视频,是不是总在C盘里翻来覆去找文件?我刚开始用的时候也经常遇到这个问题,直到发现原来存储路径可以自定义。下面我就把摸索出来的完整操作流程分享给大家…...

每日极客日报 · 2026年04月11日

每日极客日报 2026年04月11日 今日精选 20 条 IT 科技热点,覆盖 AI 大模型、开源生态、业界动态与工程实践等领域。GPT-6 定档 4 月 14 日、法国政府宣布全面放弃 Windows 转向 Linux、Anthropic 与 CoreWeave 签下多年算力大单——周六的科技圈依然热闹。 &#x…...

数据摄取构建模块简介(预览版)(一)刺

一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

阿雪心学・立身与处事小步快跑-数字永生分身-[AI人工智能(八十五)]—东方仙盟

目录结构plaintextFAIS_skill_axuePhilosophy/ ├ README.md ├ SKILL.md ├ meta.json └ persona/├ identity.yaml├ values.yaml├ rules.yaml└ style.yaml下面是每个文件的完整内容。1) README.mdmarkdown# FAIS_skill_axuePhilosophy 阿雪心学|一套务实通透的…...

大数据开发学习Day10

一、Linux / Shell tee 双向输出 head/tail 日志查看 1. tee命令:从标准输入读取数据,同时输出到标准输出(屏幕) 和一个或多个文件 tee [选项] [文件...]-a, --append 追加到文件末尾,而不是覆盖 -i, --ignore-int…...

Draw.io ECE插件:5分钟创建专业电路图的终极指南

Draw.io ECE插件:5分钟创建专业电路图的终极指南 【免费下载链接】Draw-io-ECE Custom-made draw.io-shapes - in the form of an importable library - for drawing circuits and conceptual drawings in draw.io. 项目地址: https://gitcode.com/gh_mirrors/dr/…...

从POC到千万QPS:构建可审计、可回滚、可横向对比的大模型评估指标体系(含金融/医疗双行业基线数据)

第一章:从POC到千万QPS:构建可审计、可回滚、可横向对比的大模型评估指标体系(含金融/医疗双行业基线数据) 2026奇点智能技术大会(https://ml-summit.org) 在高合规性场景中,大模型评估不能止步于单次离线评测——它…...

从零构建IPXE编译环境:避坑指南与实战解析

1. 为什么需要定制IPXE编译环境 最近在帮客户部署自动化装机系统时,发现标准PXE存在不少局限性。比如无法直接加载HTTP资源、不支持现代加密协议,最头疼的是不同硬件架构(x86 BIOS/UEFI、ARM)需要不同的引导文件。这时候IPXE就派…...

【故障公告】数据库服务器磁盘 MBPS 高造成 :-: 期间全站故障斡

Issue 概述 先来看看提交这个 Issue 的作者是为什么想到这个点子的,以及他初步的核心设计概念。?? 本 PR 实现了 Apache Gravitino 与 SeaTunnel 的集成,将其作为非关系型连接器的外部元数据服务。通过 Gravitino 的 REST API 自动获取表结构和元数据&…...

UndertaleModTool终极指南:3步构建你的个性化游戏世界

UndertaleModTool终极指南:3步构建你的个性化游戏世界 【免费下载链接】UndertaleModTool The most complete tool for modding, decompiling and unpacking Undertale (and other GameMaker games!) 项目地址: https://gitcode.com/gh_mirrors/un/UndertaleModTo…...

统一支付网关架构解析:企业级多平台支付集成设计哲学

统一支付网关架构解析:企业级多平台支付集成设计哲学 【免费下载链接】pay 可能是我用过的最优雅的 Alipay/WeChat/Douyin/Unipay/江苏银行 的支付 SDK 扩展包了 项目地址: https://gitcode.com/gh_mirrors/pa/pay 在数字化商业生态中,支付系统作…...

特征工程路线图:未来自动化特征学习的发展趋势

特征工程路线图:未来自动化特征学习的发展趋势 【免费下载链接】fe4ml-zh :book: [译] 面向机器学习的特征工程 项目地址: https://gitcode.com/gh_mirrors/fe/fe4ml-zh 特征工程作为机器学习流水线的核心环节,是连接原始数据与模型性能的关键桥梁…...