# 编译插件

# plugins/go.mod

module plugins

go 1.13

replace github.com/lf-edge/ekuiper => /$eKuiper

require (
    github.com/lf-edge/ekuiper v0.0.0-00010101000000-000000000000 // indirect
    github.com/taosdata/driver-go v0.0.0-20200723061832-5be6460b0c20
)
1
2
3
4
5
6
7
8
9
10
go mod edit -replace github.com/lf-edge/ekuiper=/$eKuiper
go build -trimpath -modfile extensions.mod --buildmode=plugin -o /$ekuiper/plugins/sinks/Tdengine@v1.0.0.so /$ekuiper/extensions/sinks/tdengine/tdengine.go
1
2

# 安装插件

由于 tdengine 插件的运行依赖于 tdengine 客户端,为了便于用户使用,安装插件时将下载 tdengine 客户端。但是 tdengine 客户端版本与其服务器版本一一对应,互不兼容,所以用户必须告知所用 tdengine 服务器版本。

# 规则 Actions 说明

由于 tdengine 数据库要求表中必须有时间戳字段,所以用户必须告知数据表的时间戳字段名称(必填tsFieldName)。用户可以选择是否提供时间戳数据,若不提供(provideTs=false),时间戳字段的内容由 tdengine 数据库自动生成。

名称类型是否必填释义
ipstring必填数据库ip
portint必填数据库端口
userstring必填用户名
passwordstring必填密码
databasestring必填数据库名
tablestring必填表名
fields[]string选填(不填时用数据的key替代)表字段集合
provideTsBool必填用户是否提供时间戳字段
tsFieldNameString必填时间戳字段名称

# 操作示例

# 创建数据库、表,参考以下文档:

https://www.taosdata.com/cn/getting-started/
1

# 创建流

curl --location --request POST 'http://127.0.0.1:9081/streams' --header 'Content-Type:application/json' --data '{"sql":"create stream demoStream(time string, age BIGINT) WITH ( DATASOURCE = \"device/+/message\", FORMAT = \"json\");"}'
1

# 创建规则

curl --location --request POST 'http://127.0.0.1:9081/rules' --header 'Content-Type:application/json' --data '{"id":"demoRule","sql":"SELECT * FROM demoStream;","actions":[{"tdengine":{"provideTs":true,"tsFieldName":"time","port":0,"ip":"127.0.0.1","user":"root","password":"taosdata","database":"dbName","table":"tableName","fields":["time","age"]}}]}'
1

# 发送数据

mosquitto_pub -h broker.emqx.io -m '{"time":"2020-01-11 18:18:18", "age" : 18}' -t device/device_001/message
1