EMQX (opens new window)是一款大规模可弹性伸缩的云原生分布式物联网 MQTT (opens new window)消息服务器。
作为全球最具扩展性的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,帮助您快速构建关键业务的物联网平台与应用。
#产品优势
- 开放源码 (opens new window):基于 Apache 2.0 许可证完全开源,自 2013 年起 200+ 开源版本迭代。
- MQTT 5.0 (opens new window):100% 支持 MQTT 5.0 和 3.x 协议标准,更好的伸缩性、安全性和可靠性。
- 海量连接 (opens new window):单节点支持 500 万 MQTT 设备连接,集群可扩展至 1 亿并发 MQTT 连接。
- 高性能:单节点支持每秒实时接收、移动、处理与分发数百万条的 MQTT 消息。
- 低时延:基于 Erlang/OTP 软实时的运行时系统设计,消息分发与投递时延低于 1 毫秒。
- 高可用:采用 Masterless 的大规模分布式集群架构,实现系统高可用和水平扩展。
一、安装
这个官方的步骤已经很详细了,在这就不写了。
概览 | EMQX 5.0 文档
二、数据持久化步骤
1. 想要数据持久化,就得链接自己的数据库
emqx开源版可以通过 访问控制--->认证--->密码认证--->使用mysql进行密码认证,如下图所示:
2. 配置桥接
(1) 桥接名称 全部用小写,这个官方的说明书就有 (2) URL 填写自己在编写API 例如:post方式 http://localhost/index.php/index (3) 规则: 规则里主要研究的就是SQL 语法
通过emqx官方的规则先查找出主题接受的信息 select * from "t/#"
本人用的thinkphp6 写得简单测试,希望能帮助到需要的朋友
<?php namespace app\controller; use app\BaseController; use think\facade\Db; use think\facade\Request; class Index extends BaseController { /** *User:yumai *Date:2023/5/11 *Time:9:35 * @return void * emqx:如果想要桥接数据到自己的数据库,就采用规则+桥接 * 步骤及思路: * 1.通过mysql认证配置,让emqx成功链接到外部mysql即自己环境的mysql * * 2. 配置桥接: (1) 桥接名称 全部用小写,这个官方的说明书就有 * * (2) URL 填写自己在编写API * * (3) 规则: 规则里主要研究的就是SQL 语法 ,通过emqx官方的规则先查找出主题接受的信息 select * from "t/#" * */ public function index() { $topic=Request::post('topic'); $payload=Request::post('payload'); $result=Db::name('mqtt_topic') ->insertGetId(['topic'=>$topic,'payload'=>$payload]); } }
*******************************
测试结果
1. webSocket 客户端配置调试
2.这是数据库写入
***********************************************************
再看emqx面板的监控数据 :主题监控数据
规则监控数据