环境信息
- EMQX 版本:4.4.8
- 操作系统及版本:CentOS7.6 32核64G
问题描述
正常接入emqx的payload数据格式不满足我们的数据需求,所以要做字段映射操作:
源数据:
{“e_uid”:“aaa”,“p_uid”:“001”}
需要对e_uid和p_uid做映射操作:
e_uid :
"aaa" >> "e001"
"bbb" >> "e002"
...
p_uid:
"001" >> "rms_h_a"
"002" >> "rms_h_v"
...
现在的方案是在规则引擎中配置sql,使用CASE WHEN THEN结构进行映射:
CASE(payload.e_uid
WHEN ‘aaa’ THEN ‘e001’
WHEN ‘bbb’ THEN ‘e002’
…
)
CASE(payload.p_uid
WHEN ‘001’ THEN ‘rms_h_a’
…
)
要映射的字段很多,总共有几千条
但是这种方案测试的时候似乎特别消耗性能:
现在测试大概每秒1000条的数据量
32核64G的服务器:
关规则cpu平均负载12%
开规则cpu平均负载47%
请问要实现该需求有没有更好的方案呢?