数据存储到ClickHouse

EMQX 客服发表于:2022年05月06日 10:46:24

保存数据到 ClickHouse

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

## 运行clickhouse容器
docker run -d --name clickhouse-server --ulimit nofile=262144:262144 \
-p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server

## 进入容器
docker exec -it clickhouse-server bash

## 启动ClickHouse服务器
clickhouse-server

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

创建 “test” 数据库:

create database test;

创建 t_mqtt_msg 表:

use test;
create table t_mqtt_msg (msgid Nullable(String), topic Nullable(String), clientid Nullable(String), payload Nullable(String)) engine = Log;

image.png

创建规则:

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

填写规则 SQL:

SELECT * FROM "#"

image.png

关联动作:

在 “响应动作” 界面选择 “添加”,然后在 “动作” 下拉框里选择 “保存数据到 ClickHouse”。

image.png

填写动作参数:

“保存数据到 ClickHouse” 动作需要两个参数:

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

image.png

选择 “ClickHouse 资源”。

填写资源配置:

image.png

点击 “新建” 按钮。

2). SQL 模板。这个例子里我们向 ClickHouse 插入一条数据,SQL     模板为:

insert into test.t_mqtt_msg(msgid, clientid, topic, payload) values ('${id}', '${clientid}', '${topic}', '${payload}')

image.png

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

image.png

规则已经创建完成,现在发一条数据:

Topic: "t/a"
QoS: 1
Payload: "hello"

然后检查 ClickHouse 表,新的 record 是否添加成功:

image.png

在规则列表里,可以看到刚才创建的规则的命中次数已经增加了 1:

image.png

    您需要登录后才可以回复