特定VPC服务器Kafka Topic生产消费报UNKNOWN_TOPIC_OR_PARTITION问题求助
Kafka Spring Boot 特定VPC环境Topic识别失败解决方案
核心问题排查及修复步骤
- 优先验证Kafka advertised.listeners配置
这是跨网络访问Kafka最常见的问题,Kafka的advertised.listeners参数是broker返回给客户端的自身访问地址,默认通常配置为集群内部内网IP/域名,特定VPC网络无法访问该内部地址时,会出现能连通bootstrap节点但无法拉取Topic元数据的情况。
验证方式:在故障服务器上执行以下命令,替换为你Spring配置中bootstrapAddress的实际值:
如果该命令无法查询到kafka-topics.sh --bootstrap-server <bootstrapAddress配置值> --listsms.requestsTopic,即可确认该配置问题,需要将Kafka集群所有节点的advertised.listeners修改为当前VPC可以正常访问的公网IP/可解析域名+端口。 - 核对Kafka ACL权限配置
如果集群开启了ACL访问控制,当前应用使用的认证账号没有sms.requestsTopic的DESCRIBE、READ权限时,也会抛出UNKNOWN_TOPIC_OR_PARTITION错误,需要给对应账号分配Topic的相关访问权限。 - 检查Topic名称是否含多余字符
核对配置文件中spring.kafka.topic.lims.sms.otp的值是否存在前后空格、特殊符号,避免订阅的Topic名称和集群中实际存在的名称不一致。 - 验证VPC网络连通性
确认故障服务器到Kafka集群所有broker节点的监听端口(默认9092)网络策略全部放行,Kafka拉取元数据需要和所有分区所在的broker通信,仅放行bootstrap节点端口会出现该异常。 - 校验客户端服务端版本兼容性
如果该VPC内的Kafka集群版本和其他正常环境的集群版本不一致,Spring Kafka客户端版本和服务端版本不兼容也会导致元数据解析异常,可调整客户端依赖版本对齐服务端版本。
内容的提问来源于stack exchange,提问作者Jigyasu Garg
相关产品推荐
相关产品推荐

