离线消息保存到 MySQL

搭建 MySQL 数据库,并设置用户名密码为 root/public,以 MacOS X 为例:

$ brew install mysql

$ brew services start mysql

$ mysql-u root-h localhost-p

ALTER USER'root'@'localhost'IDENTIFIED BY'public';

初始化 MySQL 数据库:

$ mysql-u root-h localhost-ppublic

create database mqtt;

创建 mqtt_msg 表:

DROP TABLE IF EXISTS`mqtt_msg`;

CREATE TABLE`mqtt_msg`(

`id`int(11)unsignedNOT NULL AUTO_INCREMENT,

`msgid`varchar(64)DEFAULT NULL,

`topic`varchar(180)NOT NULL,

`sender`varchar(64)DEFAULT NULL,

`qos`tinyint(1)NOT NULL DEFAULT'0',

`retain`tinyint(1)DEFAULT NULL,

`payload`blob,

`arrived`datetime NOT NULL,

PRIMARY KEY(`id`),

INDEX topic_index(`id`,`topic`)

)ENGINE=InnoDBDEFAULT CHARSET=utf8MB4;

WARNING

消息表结构不能修改,请使用上面SQL语句创建

创建规则:

然后填写规则 SQL:

FROM说明

​ t/#: 发布者发布消息触发保存离线消息到MySQL

​ $events/session_subscribed: 订阅者订阅主题触发获取离线消息

​ $events/message_acked: 订阅者回复消息ACK后触发删除已经被接收的离线消息

SELECT*FROM"t/#","$events/session_subscribed","$events/message_acked"WHERE topic=~'t/#'

关联动作:

在“响应动作”界面选择“添加动作”,然后在“动作”下拉框里选择“离线消息保存到 MySQL”。

现在资源下拉框为空,可以点击右上角的 “新建” 来创建一个 MySQL 资源:

弹出一个“创建资源”对话框

填写资源配置:

填写真实的 MySQL 服务器地址,其他配置填写相应的值,然后点击 “测试连接” 按钮,确保连接测试成功。

最后点击 “确定” 按钮。

返回响应动作界面,点击 “确认”。

返回规则创建界面,点击 “创建”。

规则已经创建完成,通过 Dashboard 的 WebSocket 客户端发一条数据**(发布消息的QoS必须大于0)**:

消息发送后,通过 mysql 查看到消息被保存到 MySQL 里面:

使用另外一个客户端,订阅主题 “t/1” (订阅主题的QoS必须大于0,否则消息会被重复接收):

订阅后马上接收到了保存到 MySQL 里面的离线消息:

离线消息被接收后会在 MySQL 中删除:

mysql t 保存_检查 (调试) - 离线消息保存到 MySQL - 《EMQ X Enterprise v4.1 中文文档》 - 书栈网 · BookStack...相关推荐

  1. emq数据储存到mysql,规则引擎示例 - 保存数据到 MySQL - 《EMQ X Enterprise v4.0 中文文档》 - 书栈网 · BookStack...

    保存数据到 MySQL 搭建 MySQL 数据库,并设置用户名密码为 root/public,以 MacOS X 为例:$ brew install mysql $ brew services sta ...

  2. emqtt数据存储mysql,数据存储 - MongoDB 消息存储 - 《EMQ X Enterprise v3.0 中文文档》 - 书栈网 · BookStack...

    MongoDB 消息存储 配置 MongoDB 消息存储 配置文件: emqx_backend_mongo.conf 配置 MongoDB 服务器 支持配置多台 MongoDB 服务器连接池:## M ...

  3. python3内存分析_调试和分析 - tracemalloc —- 跟踪内存分配 - 《Python 3.7 标准库》 - 书栈网 · BookStack...

    tracemalloc -- 跟踪内存分配 3.4 新版功能. The tracemalloc module is a debug tool to trace memory blocks alloca ...

  4. php 读取mysql 返回xml_用php解析xml并保存到mysql

    我被要求解析一个存储为XML文件的简单文件,然后将数据保存到MySQL. 然而,我完全不知道该怎么做,并且在网上查看之后,给出的所有示例对于我的问题来说似乎太复杂,或者不是正确的解决方案.XML文件如 ...

  5. mysql 中间件 租户管理_多租户的设计与实现 - 《Gaea - MySQL 中间件》 - 书栈网 · BookStack...

    多租户的设计与实现 背景 gaea多租户是为了实现一套gaea集群,可以接入多个业务系统的不同数据库,方便部署.运维.gaea多租户为软多租户,一个租户称为一个namespace,多个namespac ...

  6. mysql pmod项目_内置函数 - 数学函数 - 《Apache Doris 文档(201812)》 - 书栈网 · BookStack...

    数学函数 abs(double a) 功能: 返回参数的绝对值 返回类型:double类型 使用说明:使用该函数需要确保函数的返回值是整数. acos(double a) 功能: 返回参数的反余弦值 ...

  7. mysql集群跨地域同步部署_跨地域冗余 - 跨数据中心部署方案 - 《TiDB v2.1 用户文档》 - 书栈网 · BookStack...

    跨数据中心部署方案 作为 NewSQL 数据库,TiDB 兼顾了传统关系型数据库的优秀特性以及 NoSQL 数据库可扩展性,以及跨数据中心(下文简称"中心")场景下的高可用.本文档 ...

  8. mediumtext和string转换_数据类型 - 字符串类型 - 《TiDB v3.0 用户文档》 - 书栈网 · BookStack...

    字符串类型 TiDB 支持 MySQL 所有的字符串类型,包括 CHAR.VARCHAR.BINARY.VARBINARY.BLOB.TEXT.ENUM 以及 SET,完整信息参考这篇文档. 类型定义 ...

  9. wps在线预览接口_金山文档在线编辑 - 快速接入 - 《WPS开放平台技术文档》 - 书栈网 · BookStack...

    快速接入 一.申请和上线流程如下: 1.申请Appid和SecretKey 需要前往https://open.wps.cn 注册服务商,并且申请开通金山文档在线编辑服务. 2.实现回调接口 根据本文档 ...

最新文章

  1. memcpy,_tcscpy_s的使用
  2. Android - 已安装了存在签名冲突的同名数据包,解决方法!
  3. C# 添加xml节点多了xmlns属性问题
  4. java生成word 框勾_Java 使用模板生成 Word 文件---基于 Freemarker 模板框架
  5. java反射 动态调用_java反射拼接方法名动态执行方法
  6. [shell基础]——uniq命令
  7. c++实验4—项目6输出星号图
  8. SpannableStringUtil实现丰富文字效果
  9. realme X50将于年前亮相:支持双模5G+120Hz刷新率屏幕
  10. HTML5本地存储详解
  11. 关于python中的字符串编码理解
  12. Unity3D基础13:给物品添加力
  13. 微信小程序云开发教程-微信小程序的JS基础-this关键字
  14. ecshop二次开发手册,基本结构
  15. python结构体_python中定义结构体
  16. 适合所有手环的app_Redmi Watch体验:手环终结者?
  17. Perf -- Linux下的系统性能调优工具,第 2 部分
  18. 《PyTorch机器学习从入门到实战》 例程(PyTorch1.2版本可用)
  19. 星球日报|Conflux支持 阿里上线国内最大数字藏品交易撮合平台
  20. 二弟机器人_2017中国机器人技能大赛今天在南京理工大学举行

热门文章

  1. github果然强大
  2. Exchange 2003升级至Exchange 2007
  3. 当使用easyui时,jquery的设置disabled属性方法失效
  4. cython加密代码python_利用Cython对python代码进行加密
  5. python查询缺失值所在位置_Python Pandas找到缺失值的位置方法
  6. python桌面开发吐血_想用java写个桌面小demo,就布局都差点写吐血了,学艺不精...
  7. [转载] python中print()函数的用法和end=““不换行详解
  8. Java日历compareTo()方法与示例
  9. c# 2维数组 取一维_C#| 不同类型的一维数组声明
  10. qc35 说明书_使用Bose QC35 2年的心得 | 迟而不迟的深度体验 | 文附佩戴效果照片...