消费Kafka消息时UUID不一致、timestamp出现默认值的问题排查
Kafka Avro消费异常问题排查与解决
问题根源与解决方法
1. Timestamp字段异常:标签映射错误
你的Go结构体中timestamp字段的Avro标签写错了:
timestamp *int64 `avro:"token"`
标签值必须和Avro Schema中的字段名一致,修正为:
timestamp *int64 `avro:"timestamp"`
该错误会导致反序列化时无法匹配Schema中的timestamp字段,进而始终返回默认值。
2. UUID字段异常:类型转换与序列化格式问题
你的领域对象type id string在赋值给Avro结构体的*string字段时,需注意两点:
- 生产端:必须将UUID转换为标准字符串格式(如
"550e8400-e29b-41d4-a716-446655440000"),不要直接将UUID的二进制字节序列转成string,否则会导致Avro存储异常内容。 - 类型转换:需将自定义
id类型转为*string后赋值:var domainID XPTO.id = "标准UUID字符串" eventID := string(domainID) avroEvent.id = &eventID
额外验证项
- 确认生产侧Avro序列化逻辑正确,
timestamp字段传入的是*int64类型的有效值或nil。 - 消费时跳过5字节的操作符合Confluent Avro Wire Format规范(前5字节为Magic Byte+Schema ID),确保字节截取范围正确。
内容的提问来源于stack exchange,提问作者Wallace Soares
相关产品推荐
相关产品推荐

