规则引擎相关服务。设置规则将数据转发置你想要的目标。
设置系统环境变量:
# root@tcp(localhost:3306)/test?charset=utf8&parseTime=True&loc=Local
export DSN="<your-dsn>"
export RuleTopic="<your-rule-topic>"
DSN
信息用于连接服务数据库,目前使用的是 MySQL 驱动。采用的是 GORM 所以可以适配多个不同数据驱动。
RuleTopic
信息用于创建订阅 ID, 订阅服务可解析此 ID 创建规则主题然后用于用户订阅数据传输,目的是为了和其他服务发订阅区分。
该服务为 tKeel 下的一个插件,需要在项目中使用以下服务:
- MySQL
- dapr 边车
- redis
- tKeel Core
- tKeel Device
Core 的调用
以及 Service 中的用户认证 Auth
,还有分页工具
用的是 core-broker 项目中的包。后面注意拆解。
import (
"github.com/tkeel-io/core-broker/pkg/auth"
"github.com/tkeel-io/core-broker/pkg/core"
"github.com/tkeel-io/core-broker/pkg/deviceutil"
"github.com/tkeel-io/core-broker/pkg/pagination"
)
- 在时序路由的转发是 mysql 和 clickhouse 时,数据表需要内置两个字段:
- id, string 类型,用于保存设备 id
- timestamp, int64(bigint) 类型, 用于保存时间戳,时间戳的单位为毫秒
规则表,用于存储规则信息。
字段 | 类型 | 备注 |
---|---|---|
id | int | 主键 |
user_id | string | 用户ID |
sub_id | int | 订阅ID |
sub_enpoint | string | 订阅地址 |
name | string | 规则名称 |
status | int | 规则状态: 0-未启动,1-启动 |
desc | string | 规则描述 |
type | int | 规则类型: 0-消息,1-时序...可拓展 |
created_at | DateTime | 创建时间 |
updated_at | DateTime | 更新时间 |
deleted_at | DateTime | 删除时间 |
用于存储规则与实体设备关系的中间表
字段 | 类型 | 备注 |
---|---|---|
unique_key | string | 采用规则拼接的唯一键,主要用于避免重复插入 |
rule_id | int | 规则ID |
entity_id | string | 实体设备ID |
规则目标表,用于存储规则转发目标的一些信息。
字段 | 类型 | 备注 |
---|---|---|
id | int | 主键 |
type | int | 目标类型: 1-kafka,2-对象存储...可拓展 |
host | string | 目标地址 |
value | string | 目标值,比如说 kafka 的某一个主题,存储对象的某一个桶... 自定义而适配于自己的服务 |
ext | json | 扩展信息,以json格式存储 |
rule_id | int | 规则ID |