Node-Red流中如何将Kafka生产者msg对象序列化存入InfluxDB
问题根因
Node-RED的Kafka生产者节点默认不会自动序列化对象类型的msg.payload,直接发送对象时会触发默认的toString()方法,输出为[object Object]字符串。消费者拿到的是这段无结构字符串,无法被InfluxDB节点解析为可独立存储的字段,就会出现你遇到的问题。
解决步骤
- 发送端序列化:在Kafka生产者节点上游新增
JSON节点,配置为将JavaScript对象转换为JSON字符串,把结构化的msg.payload序列化为标准JSON格式后再送入Kafka生产者发送。 - 消费端反序列化:在Kafka消费者节点下游新增
JSON节点,配置为将JSON字符串转换为JavaScript对象,把Kafka传递的字符串还原为原始结构化对象后再送入InfluxDB节点。 - 适配自定义属性传递:如果除
msg.payload外还需要传递其他msg属性,可先将所有需要传递的属性整合成一个对象后再做序列化,消费端反序列化完成后再将属性还原回msg对应位置即可。
内容的提问来源于stack exchange,提问作者Tanishq Singh
相关产品推荐
相关产品推荐

