从Kura经MQTT代理向Kafka Topic发送数据却收到异常值
问题排查与解决方案
从截图可见,Kafka Topic中收到的是异常编码内容,而非预期的JSON格式,核心原因集中在消息编码配置、MQTT-Kafka桥接转换、消费端解析这几个环节,具体排查方向如下:
确认Kura的MQTT消息编码设置
Kura发布MQTT消息时,需将JSON字符串以UTF-8编码发送,避免默认二进制格式导致解析异常。在Kura的消息发布组件中,检查Payload Encoding配置项是否设为UTF-8,确保JSON文本直接作为字符串发送,而非转为字节数组。检查MQTT代理的Kafka桥接规则
若使用EMQX、Mosquitto等带Kafka桥接功能的MQTT代理,需验证桥接配置:- 关闭桥接的Base64编码或二进制转码功能,确保消息Payload直接透传
- 确认桥接的
message.value.format参数设为string或raw,而非binary
验证Kafka消费端的解析逻辑
自定义消费程序需以UTF-8编码解析消息内容,比如Java消费时需执行new String(record.value(), StandardCharsets.UTF_8),避免直接输出二进制字节导致乱码。捕获MQTT原始消息验证
用MQTTX等客户端订阅Kura发送的MQTT主题,查看原始消息是否为正常JSON。若MQTT端内容正常,问题出在MQTT到Kafka的桥接环节;若MQTT端已异常,则需排查Kura的消息生成代码。

内容的提问来源于stack exchange,提问作者Akhil Veramalli
相关产品推荐
相关产品推荐

