从 ClickHouse 中获取订阅关系

EMQX 企业版技术支持发表于:2022年05月11日 13:58:43

从 ClickHouse 中获取订阅关系

搭建 ClickHouse 数据库,并设置用户名密码为 default/public,以 CentOS 为例:

## 安装依赖
sudo yum install -y epel-release

## 下载并运行packagecloud.io提供的安装shell脚本
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo bash

## 安装ClickHouse服务器和客户端
sudo yum install -y clickhouse-server clickhouse-client

## 启动ClickHouse服务器
clickhouse-server

## 启动ClickHouse客户端程序
clickhouse-client

创建 “mqtt” 数据库:

create database mqtt;

创建 mqtt_sub 表:

use mqtt;
create table mqtt_sub (
    clientid String,
    topic String,
    qos Nullable(Int8) DEFAULT 0
    ) engine = MergeTree() ORDER BY clientid;

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

创建规则:

打开 EMQX Dashboard,选择左侧的 “规则” 选项卡。

然后填写规则 SQL:

SELECT * FROM "$events/client_connected"

image.png

关联动作:

在 “响应动作” 界面选择 “添加动作”,然后在 “动作” 下拉框里选择 “从 ClickHouse 中获取订阅关系”。

image.png

填写动作参数:

“从 ClickHouse 中获取订阅列表”动作需要一个参数:

1). 关联资源。现在资源下拉框为空,可以点击右上角的 “新建资源” 来创建一个 ClickHouse 资源:

image.png

选择 ClickHouse 单节点模式资源”。

image.png

填写资源配置:

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

最后点击 “新建” 按钮。

image.png

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

image.png

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

image.png

规则已经创建完成,通过 ClickHouse 命令行 往 ClickHouse 插入一条订阅关系:

insert into mqtt_sub(clientid, topic, qos) values('clickhouse', 'testTopic', 1);

image.png

image.png

通过 Dashboard  登录 clientid 为 clickhouse 的设备:

image.png

查看订阅列表,可以看到 clickhouse 设备已经订阅了 testTopic 主题:

image.png


    您需要登录后才可以回复