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 valueFROM"bus/in"WHEREpayload.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>>
发表评论