apache-kafka - 卡夫卡将偏移量重置为最早
问题描述
我正在使用 Spring-data(版本 1.5.1.RELEASE)、Spring-kafka(版本 1.1.1.RELEASE)运行 Kafka(版本 0.10.2)。
我有一个消费者群体正在从中投票的主题。我注意到有时,当一个消费者重新启动时,主题的滞后会立即变成一个更高的数字。经过一些研究,我得出结论,Kafka 重新启动了偏移量,但我不明白为什么。
enable.auto.commit = true
auto.commit.interval.ms = 5000
auto.offset.reset = smallest
log.retention.hours=168
滞后通常非常低(低于 500)并在几毫秒内消耗,因此它不能是超出范围的索引(或者可以吗?)
也许有人有想法?
解决方案
我认为它实际上并没有像您期望的那样频繁地提交偏移量,因此,当消费者重新启动时,组重新平衡,然后在最近的自动提交的偏移量处开始。
提交仅定期发生(5 秒,根据您的配置),而不是基于每条消息的消息。因此,应该期望看到最多 5 秒的重复数据,但不是主题的开头,除非根本没有提交偏移量(您应该在客户端中设置简单的 log4j 日志记录以确定这一点)
如果你想要更好的控制,禁用自动偏移提交,并调用Consumer 对象的 commitSync 或 commitAsync 方法(这些是核心 Java API 的方法,不确定 Spring)
一种选择可能是升级您的 Spring 客户端,就像 Gary 在下面所说的那样。由于您运行的是 Kafka 0.10.2+,这应该不是问题。
推荐阅读
- python - 如何使用 sudo 命令在 python 中工作
- spring - 如何在 Spring Security 中使其他用户会话过期
- python - 在 djongo 项目中运行“makemigrations”正在引发 AppRegistryNotReady
- javascript - 是否有必要取消订阅 Ionic 应用程序中的 observables?
- sql - SQL 发出 SELECT 语句
- datatable - 保存按钮后更新数据表
- python - 将字典附加到循环python中的列表
- python - 如何仅打印前 5 名客户及其前 5 名购买的产品及其各自的总销售额?
- html - 在可以读取 .csv 文件并填充下拉菜单的网页上制作下拉过滤器
- python - 我知道它从轮廓的第一个索引返回元组中的值,但是轮廓 [:, :, 0].argmin() 是如何工作的?