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/#'
關聯動作:
在“響應動作”界面選擇“添加動作”,然后在“動作”下拉框里選擇“離線消息保存到 MySQL”。
現在資源下拉框為空,可以點擊右上角的 “新建” 來創建一個 MySQL 資源:
彈出一個“創建資源”對話框
填寫資源配置:
填寫真實的 MySQL 服務器地址,其他配置填寫相應的值,然后點擊 “測試連接” 按鈕,確保連接測試成功。
最后點擊 “確定” 按鈕。
返回響應動作界面,點擊 “確認”。
返回規則創建界面,點擊 “創建”。
規則已經創建完成,通過 Dashboard 的 WebSocket 客戶端發一條數據**(發布消息的QoS必須大于0)**:
消息發送后,通過 mysql 查看到消息被保存到 MySQL 里面:
使用另外一個客戶端,訂閱主題 “t/1” (訂閱主題的QoS必須大于0,否則消息會被重復接收):
訂閱后馬上接收到了保存到 MySQL 里面的離線消息:
離線消息被接收后會在 MySQL 中刪除:
總結
以上是生活随笔為你收集整理的mysql t 保存_检查 (调试) - 离线消息保存到 MySQL - 《EMQ X Enterprise v4.1 中文文档》 - 书栈网 · BookStack...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 数据导入 mysql_or
- 下一篇: sqlserver java odbc_