You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka Streams LongDeserializer接收数据长度非8报错问题排查

问题根源

你的代码存在常量定义错误,是引发该问题的核心原因:

// 错误的常量定义,两个不同用途的常量指向了同一个Topic
private static final String OUTPUT_TOPIC_NAME = "favourite-colour-output";
private static final String INTERMEDIATE_TOPIC_NAME = "favourite-colour-output";

该错误直接导致逻辑错乱:

  • 你提前创建了user-keys-and-colours作为存储用户-颜色映射的中间Topic,但代码实际把用户颜色数据(Value为字符串类型的颜色值)写入了最终输出Topicfavourite-colour-output
  • 后续统计生成的颜色计数结果(Value为Long类型)也被写入同一个favourite-colour-output Topic
  • 消费者从开头消费时,先读到了提前写入的字符串类型Value,使用LongDeserializer反序列化时,字符串的字节长度不符合Long类型固定8字节的要求,直接抛出序列化异常。
解决方案

按以下步骤操作即可修复问题:

  1. 修改代码常量定义,把中间Topic指向你提前创建的user-keys-and-colours:
// 修正后的常量定义
private static final String INTERMEDIATE_TOPIC_NAME = "user-keys-and-colours";
  1. 清理历史脏数据:
    • 停止运行中的Kafka Streams程序、生产者、消费者
    • 删除已被污染的favourite-colour-output Topic,再按原有参数重新创建该Topic
    • 可选:删除Kafka Streams对应application.id的本地状态存储目录,避免残留状态影响运行
  2. 重新启动Kafka Streams程序、消费者、生产者,再次输入测试数据即可正常得到统计结果。

内容的提问来源于stack exchange,提问作者Arefe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:06:02