[问题澄清]
TiCDC 从 TiDB 向 Kafka 同步任务,我们使用 Java 程序进行解析时候有可能会遇到 Message Decode 失败的情况
报错如下:
at com.pingcap.ticdc.cdc.TicdcEventDecoder.next(TicdcEventDecoder.java:208)
at KafkaConsumerTest.run(KafkaConsumerTest.java:75)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.alibaba.fastjson.JSONException: syntax error, pos 1, line 1, column 2
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1481)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1367)
at com.alibaba.fastjson.JSON.parse(JSON.java:183)
at com.alibaba.fastjson.JSON.parse(JSON.java:193)
at com.alibaba.fastjson.JSON.parse(JSON.java:149)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:254)
at com.pingcap.ticdc.cdc.TicdcEventDecoder.createTidbEventValue(TicdcEventDecoder.java:141)
at com.pingcap.ticdc.cdc.TicdcEventDecoder.next(TicdcEventDecoder.java:206)
... 2 more
[原因分析]
TiCDC 默认使用 的 Kafka Sink URI ,其中 Kafka Message 存储方式 为 Byte[]模式
如果使用 string 模式获取 消息即会出现如上面的报错信息
[解决方案]
修改Kafka Client 获取 Kafka Message 消息的类型为 Byte[]