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

Kafka Json序列化/反序列化报ClassNotFoundException问题求助

问题分析

你遇到的ClassNotFoundException核心原因有两个:

  1. 消费者配置层级错误:你把spring.json相关配置直接放在Spring根节点下,而非spring.kafka.consumer.properties层级内,导致Kafka消费者的JsonDeserializer根本没加载到类型映射规则,只能按照消息头里的原始类名com.msb.config.json.ApiInsight去加载类,但消费者项目中不存在该类。
  2. 生产者与消费者的类型映射未正确联动:虽然两边都配置了别名api,但消费者未正确读取到映射规则,无法将消息头中的标识转换为自己项目中的com.msb.entity.ApiInsight类。

修正方案

1. 修正消费者配置层级

将spring.json相关配置移至spring.kafka.consumer.properties下,确保JsonDeserializer能读取到配置:

spring:
  kafka:
    consumer:
      properties:
        spring.json.trusted.packages: com.*
        spring.json.type.mapping: api:com.msb.entity.ApiInsight

2. 优化生产者配置(可选)

生产者当前配置已正确,但可添加明确配置确保使用别名作为类型标识(部分版本默认行为需此配置):

spring.kafka.producer.properties.spring.json.type.mapping= api:com.msb.config.json.ApiInsight
spring.kafka.producer.properties.spring.json.use.type.headers=true
spring.kafka.producer.properties.spring.json.type.id.header=__TypeId__

3. 额外验证点

  • 确保消费者侧的com.msb.entity.ApiInsight与生产者侧的com.msb.config.json.ApiInsight类JSON结构完全兼容(字段名、类型一致),避免反序列化时出现其他错误。
  • 用Kafka工具查看消息的__TypeId__头,确认其值为api而非原始类名,若仍为原始类名,需检查Spring Kafka版本兼容性(你的2.9.13版本支持该配置)。

错误说明

报错信息里的ClassNotFoundException: com.msb.config.json.ApiInsight,本质是消费者未加载到类型映射规则,只能按消息头中的原始类名去查找,但消费者项目中没有这个包路径下的类,因此抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:26:14