Kafka无法跟踪上次提交的偏移量

时间:2020-05-20 12:31:28

标签: apache-kafka kafka-consumer-api spring-kafka

kakfa-broker在管理补偿方面是否存在任何已知问题?顺便说一句,我们面临的问题是当我们尝试重新启动kafka-consumer(即应用程序重新启动)时,有时所有偏移量都重置为0。 完全不知道为什么消费者不能从最后提交的偏移量开始。

我们最终会在产品中面临这个问题,其中整个q事件都将被重播:

  • spring-boot版本-2.2.6发行版
  • spring-kafka-2.3.7版本
  • kafka-client -2.3.1
  • apache-kafka-kafka_2.12-2.3.1

我们有10个主题,每个主题属于同一组,每个主题有50个分区,我们会在运行时根据负载增加主题分区和使用者数量。

  • 自动提交=假
  • 处理后同步提交每个偏移量
  • 最大投票记录设置为1

所有此配置后,它将按预期在本地设置中运行,在部署到产品后,我们发现此类问题并非在每次重新启动时都会出现。 有没有我所缺少的配置。 完全无能为力!

2 个答案:

答案 0 :(得分:0)

您需要确保:

1)您使用的是相同的消费者组ID

2)auto.offset.reset设置为latest

spring.kafka.consumer.group-id=your-consumer-group-id
spring.kafka.consumer.auto-offset-reset=latest

如果您仍然遇到此问题,请尝试启用自动提交

spring.kafka.consumer.enable-auto-commit=true

如果问题消失了,则意味着您的手动提交未按预期工作。

答案 1 :(得分:0)

不要在另一个答案中根据建议启用自动提交;侦听器容器将更可靠地提交偏移量,并且正如您所说的,您始终不会遇到问题。

是否有可能一周没有收到任何记录?

或者,您的经纪人是否有较短的offsets.retention.minutes属性?

在2.0中,它从默认的1天更改为1周。如果偏移量已过期而已被删除,而您重新启动使用者,则会得到所观察到的行为。