编译插件

plugins/go.mod

  1. module plugins
  2. go 1.13
  3. replace github.com/emqx/kuiper => /$kuiper
  4. require (
  5. github.com/emqx/kuiper v0.0.0-00010101000000-000000000000 // indirect
  6. github.com/taosdata/driver-go v0.0.0-20200723061832-5be6460b0c20
  7. )
  1. go mod edit -replace github.com/emqx/kuiper=/$kuiper
  2. go build -trimpath --buildmode=plugin -o /$kuiper/plugins/sinks/Tdengine@v1.0.0.so /$kuiper/plugins/sinks/tdengine/tdengine.go

安装插件

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

规则 Actions 说明

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

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

操作示例

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

  1. 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