使用Flink2.0消费低版本的Kafka

目前我们线上使用的Flink2.0版本,其中使用的Kafka版本为4.0.0,所以使用的flink-kafka-connector版本为4.0.1-2.0,所以我们使用的kafka-clients为4.0版本,但是在消费低版本的kafka时报了以下错误:

UnsupportedVersionException: The node does not support FETCH with version in range 4,12.
The supported range is 0, 3.

其中查询对端kafka的api版本信息:

其中能看到远端Kafka支持的Fetch请求的版本为0, 3,而我们使用的kafka-clients:4.0.0版本支持4,12,所以是客户端版本太高了,不兼容低版本的Fetch版本,这会导致无法消费kafka的数据了。

通过AI分析:提示让降级kafka-clients版本,或者降级flink版本,使用适配低版本kafka的连接器,然而这两种方案改动都比较大。

通过分析kafka源码发现,其中的Fetch类是通过Json文件动态生成的:

复制代码
JSON 定义文件 → MessageGenerator → ApiMessageTypeGenerator → ApiMessageType.java → ApiKeys.java

JSON文件定义为:

可以看到在4.0版本中,kafka-clients最低支持是4-17。最后我们观察低于4.0版本的客户端中支持情况,发现在3.9.1版本中,Fetch是支持0-17的,所以kafka-clients最后切换到3.19.1版本即可。

其中kafka中判断版本代码路径在:

相关推荐
他们叫我阿冠26 分钟前
Kafka的基本了解
分布式·kafka
Amy187021118231 小时前
分布式光伏并网新规落地在即,一套监控系统如何打通“四可”合规与收益优化的双重关卡?
分布式
超梦dasgg1 小时前
Java 生产环境分布式定时任务全解(实战落地版)
java·开发语言·分布式
汪小哥2 小时前
kafka 初识
分布式·kafka
Shan12052 小时前
分布式锁的优势与互斥性
分布式
段一凡-华北理工大学3 小时前
工业领域的Hadoop架构学习~系列文章18:制造业Hadoop应用实践 - 从数据到智能的完整闭环
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁
暗夜猎手-大魔王3 小时前
转载--Hermes Agent 企业级分布式部署方案
分布式
heimeiyingwang3 小时前
【架构实战】日志体系设计:从ELK到可观测性的演进
分布式·缓存·架构
可乐ea3 小时前
【知识获取与分享社区项目 | 项目日记第 24 天】终章总结:从认证、发布、计数、Feed、搜索到 RAG:完整复盘一个知识社区后端系统
java·spring boot·redis·mysql·elasticsearch·ai·kafka
Jabes.yang4 小时前
Java面试实录:AIGC场景下的Stream、微服务、Redis、Kafka与安全实战
java·spring boot·redis·微服务·面试·kafka·aigc