EMQX 规则引擎之数据告警(从Map中取值)

作者 2025年03月26日 09:46 阅读 18

EMQX 规则引擎之数据告警(从Map中取值)

 

1、数据格式 (map为params,其key可以是数字,只要是符合标准的json格式即可)

{"msgType":201,"txnNo":1741059781672,
"params":{
···"06010072":{"addrId":1,"id":"06010072","value":"2"},
···"06010071":{"addrId":1,"id":"06010071","value":"10"},
···"06010038":{"addrId":1,"id":"06010038","value":"2000"}
},
"sn":"sn123456","result":1}

 

2、规则(SQL过滤)

SELECT
'test' as flag,
clientid as deviceSn,
payload.params.06010038.id as id,
payload.params.06010038.value as value
FROM
"bus/in"
WHERE
payload.params.06010038.value > 100

3、数据输入 (数据源)

Topic:  bus/in

4、动作输出 (消息重发布到新的topic)

Topic:  device/temp/alert_map

 

结论: 通过与上一篇的数据处理方式对比发现,map比List的格式更方便sql过滤,不需要逐个比较,查找的时间复杂度也更低!所以组织数据时,应该尽量以map代替List 传给引擎。比如List<Param<String,Object>> 应转为 Map<String,Param<String,Object>> 

发表评论

请先登录后再发表评论!