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

离线消息保存到 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/#'

2bb6c8ad2c7bfcf8f1019db0a8cf6d03.png

关联动作:

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

20fbf121e5e390165b19942a0ca4039c.png

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

03bce5c08922e02e024df68287554238.png

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

56cb5461c62bc2e9ef6999bb7a7fb3cc.png

填写资源配置:

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

最后点击 “确定” 按钮。

39b80efc4e4dfb2b8409ed13ead62486.png

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

d528ae921decbcf2fd3e9d1ea8e73909.png

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

ee489b511ee44a8fe2444eb84d69ce96.png

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

ecb2b791ddf4e6ac548ee40139c008c8.png

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

29ebc1422155d65023a319232e7b3fc9.png

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

46cd35a260a175b8fb345927cfb75a25.png

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

f95205292feedb01699f8334e41a610a.png

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

2d159e0ea6a066a6336d9a71f5c1b20b.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

管家婆 mysql_管家婆数据库表.doc

管家婆数据库表.doc管家婆数据库表名称 代码 职员信息表 employee 库存商品信息表 Ptype 往来单位 btype 摘要表 Abstract 地区信息表 AreaType 会计科目表 atypecw 仓库信息表 Stock 部门信息表 Department 订单索引表 DlyndxOrder 订单明细表 BakDlyOrder 单据索引表 Dlyndx …

mysql5.7安装教程centos_MySQL5.7版CentOS系统简易安装教程

这一篇教程,我们一起来完成MySQL在CentOS系统中的安装。1、下载MySQL(Community版)RPM安装源。如果没有安装wget,需要先执行命令安装。执行命令:yum -y install wget然后,通过wget下载安装源。例如,下载到“/root/Down…

enum mysql byte_九、臭名昭著的 MySQL ENUM 类型 ( 上 )

MySQL 中,对于那些取值只有两三个,或者五个以内的值,想必,大多数人使用的应该都是 ENUM 类型吧,而剩下的另一部分人,应该都是使用 TINYINT(1) 。 我,就是剩下的那部分人。一方面我真的是太懒&am…

java @valid 密码不一致_一个成熟的Java项目如何优雅地处理异常

(一)概述异常处理是一个系统最重要的环节,当一个项目变得很大的时候,异常处理和日志系统能让你快速定位到问题。对于用户或者接口调用者而言,优雅的异常处理可以让调用者快速知道问题所在。本文将介绍如何优雅地处理异常。(二)使用通用的返回…

spark消费kafka产生数据堆积怎么处理_SparkStreaming读取Kafka的两种方式

本文主要从以下几个方面介绍SparkStreaming读取Kafka的两种方式:一、SparkStreaming简介二、Kafka简介三、Redis简介(可用于保存历史数据或偏移量数据)四、SparkStreaming读取Kafka数据的两种方式 五、演示Demo一、SparkStreaming简介可以参考这篇文章:SparkStreami…

MySQL数据步骤管控_数据管理的发展过程分为哪三个阶段

数据管理的发展过程分为哪三个阶段发布时间:2020-11-12 12:01:00来源:亿速云阅读:124作者:小新这篇文章主要介绍数据管理的发展过程分为哪三个阶段,文中介绍的非常详细,具有一定的参考价值,感兴…

myftpadmin+proftpd+mysql架设ftp服务器_linux下用Proftpd搭建ftp服务器及配置方法

首先proftpd是一个开源软件,其官方地址是http://www.proftpd.org,目前最高版本是:1.3.1(非稳定版),稳定的版本是1.3.0,下载文件为proftpd-1.3.0a.tar.gz我下载的是1.3.0,上传到服务器上后按照常规的方法安装…

mysql设置输出格式_rsyslog 配置mysql输出格式

http://www.rsyslog.com/doc/v8-stable/configuration/modules/ommysql.html文档中:Note rsyslog contains a canned default template to write to the MySQL database. It works on the MonitorWare schema. This template is:$template tpl,”insert into System…

nginx trac mysql svn_apache+mysql+trac+svn

Windows 2008 R2安装ApacheSVNTracMySQL步骤及心得一、软件准备1.Apache_2.2.14-win32-x86-no_ssl.msi2.Setup-Subversion-1.7.1.exe3.TortoiseSVN-1.6.16.215114.Mysql-5.5.28-win32.exehttp://www.doczj.com/doc/3bbc3a4b915f804d2b16c1e7.html Framework V4.06.Python-2.7.6…

python 所有关键字解释_Python关键字详细解释

Python关键字,也被称为保留字。保留字是官方定义的,具有特殊含义的单词。 用户不能使用保留字作为变量、函数、类等自定义的名称。查看当前Python版本保留字的方法。打开cmd,执行python,进入到Python交互模式中然后依次输入下面的…

python字符串操作作业_python 第二天作业

#python 中的循环#先介绍for循环#格式#for 临时变量 in 可迭代对象# 循环体#name neusoft#for a in name :# print(a)# if a s# print(嘿嘿)#循环次数哪里去了?# #这个a是什么鬼? a是临时变量 提前声明 python自动为你创建#range (起始位置&#xff0c…

python字符串迭代_Python字符串迭代/函数

我需要我的“items”变量将每个项目打印到新行上。我总是在“items”中得到总数,在“total”中得到总数。“总计”打印出我想要的结果,但我希望这些项目单独打印。在有什么想法?在def adding_report():user_input input("Report Types …

python 白化_Python新疆某气候要素IDW(反距离权重)插值

1、Rbf插值import numpy as npimport cartopy.crs as ccrsimport cartopy.feature as cfeatfrom cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTERfrom cartopy.io.shapereader import Readerimport matplotlib.pyplot as pltimport matplotlib.ticker a…

帆软报表参数传给网络报表_报表开发工具FineReport的使用: 程序网络报表

1定义程序网络报表程序网络报表所在类需要继承com.fr.web.reportlet这个抽象类,并且需要实现createReport(ReportletRequest arg0)这个方法,并返回报表对象。具体代码如下:2//程序网络报表package com.fr.demo; import java.util.Map;impo…

bootstrap 取消_学习写个网站(5)Bootstrap学习2

吃了2天烧烤夜宵&#xff0c;还是得讲点自律。【正文】继续bootstrap&#xff0c;还是菜鸟教程。11. 分页就是还有种就是翻页&#xff0c;12. 标签class"label label-default">默认标签</span>label-primarylabel-success13. 警告就是那种可以取消的消息&am…

jdbc mysql user_tab_comments_MySQL学习(五)——使用JDBC完成用户表CRUD的操作

通过案例我们发现“获得连接”和“释放资源”两次代码将在之后的增删改查所有功能中都存在&#xff0c;开发中遇到此种情况&#xff0c;将采用工具类的方法进行抽取&#xff0c;从而达到代码的重复利用。1、使用properties配置文件开发中获得连接的4个参数(驱动、URL、用户名、…

mysql系统属性_mysql 显示表字段及mysql系统信息

SHOW DATABASES //列出 MySQL Server 数据库。SHOW TABLES [FROM db_name] //列出数据库数据表。SHOW TABLE STATUS [FROM db_name] //列出数据表及表状态信息。SHOW COLUMNS FROM tbl_name [FROM db_name] …

mysql中try的意思_java中try是什么意思

try是Java中的关键字&#xff0c;主要用于异常处理机制&#xff0c;那么它有什么作用呢&#xff1f;try – 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内&#xff0c;当try语句块内发生异常时&#xff0c;异常就被抛出。它一般与catch..finally组合使用块…

如何在命令中授权给MySQL_MySQL如何使用授权命令grant

本文实例&#xff0c;运行于 MySQL 5.0 及以上版本。MySQL 赋予用户权限命令的简单格式可概括为&#xff1a;grant 权限 on 数据库对象 to 用户一、grant 普通数据用户&#xff0c;查询、插入、更新、删除 数据库中所有表数据的权利。grant select on testdb.* to common_user%…

linux用java连接mysql_Java使用JDBC方式连接数据库

开发一个JDBC应用程序&#xff0c;基本需要以下几个步骤&#xff1a;1.把JDBC驱动类装载入Java虚拟机中。使用java.lang.Class类的静态方法forName(String className)实现。例&#xff1a; Class.forName("JDBC驱动类名称")2.加载驱动&#xff0c;并与数据库建立连接…