记录一次环境kafka一直处于消费的问题,导致一直在刷日志

一、现象

通过docker查看日志,一直打印下面的日志

[[34morg.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1[0;39m] ERROR[[36mme.sso.admin.service.kafkautils.ProssKafkaConsumer[0;39m] [[35monMessage1[0;39m] [[32m100[0;39m] -> 简单消费:g2park_auth_user-1-

二、原因分析

1.首先,将日志下载下来,发现日志一直在消费打印。然后觉得消费失败了,没有设置消费失败重试配置。设置消费失败重试次数后,重启服务,依然报相同的问题。

2.接着,将该kafka消息试着在本地环境消费,在本地启动应用后,发现没有类似的问题,于是将环境中的nacos的配置配置在自己的命名空间中,发现没有任何问题。这确实奇怪。由于时间原因,无法深究。

3.只能通过百度查询,发现百度到的答案都没有类似的问题,于是只能从消息重复消费的方向着手,参考了另一个博主的博客kafka消息积压分析。从而看到了有关自动提交offset的配置,enable.auto.commit = true, auto.commit.interval.ms  =1000 的配置,默认的应该是5s,于是我改成了auto.commit.interval.ms  =5000. 最终问题得到解决。分析,我们的场景中确实有些消息较大,时间过长,会导致没有消费完成。

三、结果分析

kafka消息消费:存在几个问题以及处理方法。

a.自动提交offset

enable.auto.commit:是否开启自动提交offset功能,默认是true
auto.commit.interval.ms:自动提交offset的时间间隔,默认是5s

b.手动提交offset

commitSync(同步提交):必须等待offset提交完毕,再去消费下一批数据。 更可靠。
commitAsync(异步提交) :发送完提交offset请求后,就开始消费下一批数据了。吞吐量更高。

c.指定offset消费

auto.offset.reset = earliest | latest | none 默认是 latest

自定义offeset消费

consumer.seek(tp, 55);

d.漏消费和重复消费

重复消费:已经消费了数据,但是 offset 没提交。

漏消费:先提交 offset 后消费,有可能会造成数据的漏消费。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值