kafka开启SASL认证后首次发送失败

一、需求背景:

springboot项目配置两个不同kafka集群。原有kafka(kafka1)配置保持不变,采用默认配置方式,第二个kafka(kafka2)采用自定义配置进行配置。

二、问题现象以及分析:

向kafka2推送消息时,第一次总是发送失败,并出现以下日志。

org.apache.kafka.common.errors.TimeoutException: Expiring 6 record(s) for topicxxx: 30031 ms has passed since batch creation plus linger time

1.将两个kafka配置调换位置后,kafka2依然会出现这个报错,确认本地代码没有问题。

2.分析两个kafka异同,kafka1是单机、默认配置,kafka2是集群且开启了 SASL认证、配置情况未知,将kafka1更换为新的集群,经过测试无问题,因此初步定位开启SASL认证导致的。

通过翻阅资料,在开启SASL认证后,底层在InetAddressSocket时将ip理解成域名进行解析,解析失败后才会以正常的ip进行解析,而在域名解析时,会花费较多的时间。而在使用kafka2进行消息推送时,由于时懒加载方式,只有send时才会初始化kafka配置,因此导致推送的元数据在完成认证前过期而抛出以上日志。

三、解决方案:

  1. 增加元数据失效时间;

  1. 通过配置客户端所在服务器域名解决。

四、最终方案:

采用增加元数据失效时间完成问题解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值