博客 【Kafka】TimeoutException: Topic device-state-in-topic not present in metadata after 60000 ms.

【Kafka】TimeoutException: Topic device-state-in-topic not present in metadata after 60000 ms.

   数栈君   发表于 2023-11-10 11:49  1751  0

1.问题原因

org.springframework.kafka.KafkaException: Send failed; nested exception is org.apache.kafka.common.errors.TimeoutException:
Topic device-state-in-topic not present in metadata after 60000 ms.


翻译过来就是:因为Kafka生产者在发送消息时,无法在指定的时间内获取到topic的元数据信息。
2.问题排查

1. Kafka集群中的某个broker宕机或不可用,导致无法获取到topic的元数据信息。
查看集群监控,每个节点都能ping通所以这个没问题。

2. 网络连接不稳定或延迟过高,导致无法及时获取到topic的元数据信息。
相同节点的topic都在正常生产和消费也不是这个问题

3.Kafka版本不兼容,导致无法获取到topic的元数据信息。
这个也不是,版本之前都核对过了

4.项目配置或者业务问题
我们生产到这个topic是一天发一次,在项目里面的其他topic几分钟一次或者实时的都没有问题,那怀疑是不是发送间隔时间太长了,导致的这个问题,我开始写了一个定时任务5分钟往这个topic发一条空数据,观察一天后,果然是这个原因。

我查看了一些kafka的生产者配置 看到下面的配置:

kafka:
#连接地址
bootstrap-servers: 127.0.0.1:9092
producer:
properties:
metadata:
max:
age:
ms: 300000

这个参数意思是:
metadata.max.age.ms是Kafka配置中的一个参数,用于指定元数据的最大生存时间(以毫秒为单位)。

元数据是Kafka中存储有关topic、partition、broker等信息的数据结构。当客户端连接到Kafka集群时,它会向集群的每个broker发送请求以获取元数据。如果元数据在一定时间内没有被更新,那么它将过期并需要重新获取。

我设置成5分钟,元数据在 metadata.max.age.ms 所限定的时间范围内没有进行更新,则会被强制更新,就解决了这个问题。
————————————————
版权声明:本文为CSDN博主「飞四海」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/daohangtaiqian/article/details/131964194

免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!


《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack



0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群