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>>
发表评论