当前位置: 首页 > article >正文

阿里云kafka消息写入topic失败

1. 问题现象描述

20240918,14:22,测试反馈说kafka有问题,生产者写入消息的时候报错,并发了一张日志截图,主要报错如下:
to topic xxxx: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for xxxx-0:120000 ms has passed since batch creation。

The cloud topic xxxx-0 dose not support idempotent and transaction, please use the local topic

第一条报错的大概意思是写入超时,也就是网络有问题。第二条报错是说topic不支持幂等和事务,请使用本地topic。

2. 排查过程

2.1 检查网络环境

这个kafka实例是用的阿里云的,服务和配置我都检查过,一个多月没改动了,但还是根据报错检查一下,我先自行在pod中telnet了一下kafka实例的地址,检查了白名单,随后又按照阿里云官方提供的检查方式,检查了网络、生产、消费等方面,都显示正常。

2.2 检查kafka topic存储类型

阿里云上的kafka,创建topic时,可选的存储是云存储和local存储,我这边所有的topic默认都是使用的云存储,但是根据云厂商的回复,客户端版本如果使用3.0及以上的话,是没有办法使用幂等的,就会导致消息发送失败,刚好我问了一下开发,说用的是3.7.1,但开发说已经关闭了幂等功能。
好吧,到这里排查不下去了,准备抓包。

2.3 测试写入其他topic

这里让开发改了一下代码,看看写入其他topic是否正常,测试结果没问题,写其他topic能写。

2.4 抓包

这里把版本回滚到了消息写入异常的这一版,pod中用tcpdump 抓和kafka通信的包,让开发手动触发消息写入,报文截图如下:
在这里插入图片描述
可以看到上面kafka客户端版本是3.7.0,我寻思这跟开发说的一不一样的,于是把版本发到能够正常写入消息的这一版,继续抓包,报文如下:
在这里插入图片描述
新发现,能写的这个客户端是3.7.1,随后反馈给开发。

3. 问题原因

最后跟开发沟通,是因为他在3.7.1这个客户端版本,关闭了使用幂等功能,所以消息能写了,其实不换客户端版本也没关系。
最后问开发老版本3.7.0是不是没关使用幂等,开发说不记得了,我服了!


http://www.kler.cn/a/316234.html

相关文章:

  • 在JPA和EJB中用乐观锁解决并发问题
  • Java 多线程(三)—— 死锁
  • 信号-3-信号处理
  • Mysql数据库里的SSH连接
  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • 比ChatGPT更酷的AI工具
  • 【Nginx】Nginx 使用 SSL 的详细指南
  • 内核是如何发送数据包
  • Python国产新 ORM 框架 fastzdp_sqlmodel 快速入门教程
  • AI时代保持并提升自身的核心竞争力
  • 常⻅中间件漏洞(WebLogic)靶场
  • 树莓派pico上手
  • 构建高可用和高防御力的云服务架构第五部分:PolarDB(5/5)
  • 今日leetCode 反转字符串
  • 第二证券:股价为什么出现大跌?股价大跌时怎么办?
  • 网安开发:杭州某科技银行面经和答案
  • 轻松获取京东商品信息:商品详情API接口使用教程
  • 关系数据库和非关系数据库
  • 信息安全数学基础(15)欧拉定理
  • 8--SpringBoot原理分析、注解-详解(面试高频提问点)
  • 【Python机器学习】NLP信息提取——值得提取的信息
  • Fyne ( go跨平台GUI )中文文档- 扩展Fyne (七)
  • 是什么推动了今年CSP-J/S报名人数的再创新高?
  • 【AI创作组】Matlab绘图基础之plot函数
  • [Redis][String][上]详细讲解
  • 使用Flink命令行和Java API远程提交Flink任务到Yarn