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,一经查实,立即删除!

相关文章

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

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

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

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

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新疆某气候要素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中try的意思_java中try是什么意思

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

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

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

java web gradle_gradle学习之旅(四) 使用gradle构建简单的java web项目

本节通过一个简单的javaweb项目来体会gradle的使用需求构建一个javaweb项目&#xff0c;搭建jspservlet开发环境可以将需求分解为两步&#xff1a;使用gradle构建一个java项目为该项目构建web视图层工具gradle4.3ideajdk 1.8实验过程首先在idea中创建一个空的gradle项目创建如下…

java 整数 引用传递_关于Java引用传递的一个困惑?

Java的引用(包括基本类型&#xff0c;对象引用类型)在声明、方法调用等时候都会产生新的引用&#xff0c;复制等号右侧的引用。分为下面3种情况&#xff1a;基本类型代表的值存储在引用里面&#xff0c;引用中专门有个区域存储这个值&#xff0c;所以在复制的时候&#xff0c;值…

java fastjson 泛型_解决fastjson泛型转换报错的解决方法

错误信息Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.UserDO泛性类Datapublic class ResultSetDTO {private Integer totalSize;private Integer count;private List records;}实体类…

通达OA header身份认证绕过漏洞复现

通达OA是中国通达公司的一套协同办公自动化软件&#xff0c;通达OA2013&#xff0c;通达OA2016&#xff0c;通达OA2017 存在身份认证绕过漏洞&#xff0c;攻击者可以利用漏洞生成cookie&#xff0c;实现未授权访问。 1.漏洞级别 高危 2.漏洞搜索 fofa title"office An…

leetcode mysql 排名_Leetcode178.分数排名(中等)

题目编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名(Rank)相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔”。-----------| Id | Score |-----------| 1 | 3.50 || 2 | 3.6…

java post 中文乱码问题_java post中文乱码问题

java post中文乱码问题function addcategory() {if (document.myform.category.value "") {alert("商品分类不能为空");return;}//var categorydocument.getElementById("category").value;var c document.myform.category.value;alert(c);wit…

java struct工作原理_Struts2的工作原理(图解)详解

Struts2的工作原理上图来源于Struts2官方站点&#xff0c;是Struts 2 的整体结构。一个请求在Struts2框架中的处理大概分为以下几个步骤(可查看源码&#xff1a;https://github.com/apache/struts):1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的…

java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法

洛谷 P1016 旅行家的预算 Java解法洛谷 P1016 旅行家的预算 Java解法package com.two;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);double D1 sc.nextDouble();// 两个城市之间的距离double C …

java语言执行过程_Java程序的运行过程(执行流程)分析

万事知其然&#xff0c;要知其所以然&#xff0c;所以本节带大家来详细了解一下 Java 程序的执行过程。从《使用记事本编写运行Java程序》一节的案例可以看出&#xff0c;Java 程序的运行必须经过编写、编译和运行 3 个步骤。编写&#xff1a;是指在 Java 开发环境中进行程序代…

php搭建云服务器,云服务器上如何搭建php环境

1) 安装libtool和libtool-ltdl[rootlocalhost mysql]# yum -y install "libtool*"[rootlocalhost mysql]# yum -y install "libtool-ltdl*"2) 手工修改gd库文件PHP 5.4 也有一些 Bug&#xff0c;在检测 gd 库时会报错&#xff0c;需要我们手工修改。命令如…

php实现文本替换,php 如何实现文字替换

php实现文字替换的方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后输入代码“str_replace("iwind", "kiki", "i love iwind, iwind said");”&#xff1b;最后输出执行结果即可。在php替换字符效率最高也是最简单字符替换函数str_repl…