今天测试环境出现了一个Kafka发送消息的问题,排查了好长时间才解决,记录一下

问题症状

测试环境突然出现发送Kafka消息失败的错误,错误截图如下:

在网上查一下,很多人都说是Kafka服务端和客户端的版本不兼容导致了报错,于是朝着这个方向去排查问题

服务端版本确认

找运维的同学确认是否动过服务端的Kafka版本,因为之前一直正常运行了很长时间,今天突然出现了这个问题,肯定是有人动过什么东西。
运维的同学确认没有动过服务端的Kafka版本,服务端版本问题排除

客户端版本确认

查找git提交记录,看是否有研发的同学修改过Kafka客户端的版本,最后也发现没有修改过版本,那就尴尬了。客户端和服务端都没有动过版本,那为啥会报这个错误呢?之前运行过很长时间,说明版本肯定是兼容的,今天突然出现问题肯定还是有人动了什么东西

找到真凶

在排除服务端和客户端版本不兼容的问题后,就试着看了一下报错处的源码

 else if (this.magic < 2 && headers != null && headers.length > 0) {throw new IllegalArgumentException("Magic v" + this.magic + " does not support record headers");} 

从源码可以看出来,除了判断版本以外,还进行了headers的判断,说明发送的消息必须带了请求头才会报这个错误,但奇怪的是我们在发送消息给Kafka的时候并没有添加请求头,这说明有额外的东西在往请求里面添加请求头,才导致了这个问题

发现网上也有人提到请求头里面带了参数,才会导致这个问题,比如:https://www.jianshu.com/p/80ca3ade8fb2

问题到这里似乎有些眉目了,应该是某些应用在请求里面强行加了参数,于是断点代码找到发现是在header中添加了X-B3-SpanId,查了下发现是sleuth在header中添加了X-B3-SpanId,来实现微服务跟踪,下了这个,马上就恢复正常了。

总结

当出现这个问题时,一般会有两个原因

1.在搭项目框架的时候出现这个问题,那大概率是因为版本的原因

2.如果你是在运行比较久的系统里面突然出现了这个问题,那大概率是因为你在头部加了某些参数,当然在头部加参数也是可以通过升级Kafka版本来解决的,只是如果你的版本刚好不支持,就可以从这方面找一下原因

参考了:https://blog.csdn.net/pzjtian/article/details/108300631

Kafka报错:Magic v1 does not support record headers相关推荐

  1. Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法

    Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...

  2. kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation

    kafka报错信息: kafka server:Message was too large ,server rejected it to avoid allocation  kafka版本: kafk ...

  3. 【Flink】Flink 写入 kafka 报错 The server disconnected before a response was received

    文章目录 1.场景再现 1.1.概述 1.场景再现 1.1.概述 Flink 写入 kafka 报错 The server disconnected before a response was rec ...

  4. 【Spark】Spark Stream读取kafka写入kafka报错 AbstractMethodError

    1.概述 根据这个博客 [Spark]Spark 2.4 Stream 读取kafka 写入kafka 报错如下 Exception in thread "main" java.l ...

  5. kafka报错:creating broker listeners from xxx unable to parse xxx:9092 to a broker endpoint

    1.美图 2.背景 kafka报错:creating broker listeners from xxx unable to parse xxx:9092 to a broker endpoint 具 ...

  6. 【Kafka】kafka报错 UnknownHostException: %HOSTGROUP::host_group_zookeeper%: Temporary failure in name re

    1.概述 背景和这个有关:[Kafka]docker下kafka报错 IOException: Connection to xxx:19093 (id: 1002 rack: null) failed ...

  7. Kafka : 报错 KafkaController NoSuchElementException : : key not found : [xxx]

    1.美图 2.背景 运行中的kafka 报错如下 目前还没找到原因 参考:KafkaKAFKA-415 参考:KafkaKAFKA-3239

  8. kafka报错:Error writing out kafka.log:type=Log,name=LogStartOffset,topic=xx EofException

    文章目录 1.美图 2.背景 1.美图 2.背景 cdh启动kafka报错,错误代码如下 Error writing out kafka.log:type=Log,name=LogStartOffse ...

  9. Flink读取Kafka报错:KafkaException ByteArrayDeserializer is not an instance Deserializer

    1.视界 2.背景 做flink读取kafka报错 org.apache.kafka.common.KafkaException: Failed to construct kafka consumer ...

最新文章

  1. 里程碑式成果Faster RCNN复现难?我们试了一下 | 附完整代码
  2. java一维数组初始化_Java一维数组,初始化一维数组详解
  3. FCN-TensorFlow完整代码Github
  4. vs中如和根据项目生成类图_迁移WPF项目到.NET Core
  5. ICCV 2019 | 厦大提出快速NAS检索方法,四小时搜索NN结构
  6. 杭电 1060 Leftmost Digit
  7. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 3.5 小结
  8. C语言绘图EasyX图形库基础(笔记)
  9. VBA入门--VBA基础知识和简单技能技巧
  10. 【解决方案】数字孪生智慧光伏电站三维可视化系统
  11. vuecli添加和移除插件_魔兽世界怀旧服,CEPGP EPGP插件完全汉化版 9月最新更新...
  12. dede posttocar.php.,plus/posttocar.php · lsok/jiushu2 - Gitee.com
  13. 在EntityFramework中使用 nock的方法。
  14. Netty面试题和答案
  15. python 打卡记录代码_利用Python实现对考勤打卡数据处理的总结
  16. 【拓扑学知识】3.乘积空间与拓扑基
  17. 调用百度h5活体检测
  18. 使用O2OA二次开发搭建企业办公平台(二)平台部署篇:端口冲突和服务器端口配置
  19. Java-方法的详解( 看完之后,我不允许还有人不懂!)
  20. 小玉在游泳小鱼的航程(改进版)

热门文章

  1. 帝国cms php mip提交,帝国CMS模板网站MIP改造教程(一)
  2. 利用阿里云大数据产品建设数据中台?
  3. jQuery基础04
  4. Google日文输入法的一个问题
  5. Java资料总结(全)
  6. python输入姓名删除电话号码_pyhon基础之实例操作__个人名片管理系统,输入,查询,增加,删除等基本表的操作...
  7. 实现Android APK加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。兼容unity引擎。附加固工具链接。
  8. 优麒麟系统调整启动项顺序的经验分享
  9. 给IT人员支招:如何跟业务部门谈需求分析?(上)
  10. 透过《数字孪生白皮书2020》,看平行世界的当下与未来