如果客户端消费消息没有提交,配置的auto.offset.reset=earliest ,如果服务器重启了,那么该group是否会重新消费服务器里面所有的消息?
如果auto.offset.reset=latest 是否也会重新消费?
网上查到的说明,是否就是指重启服务器的情况?
earliest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
latest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
none
topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
kafak的auto.offset.reset疑问
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-07 12:39关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Kafka中,
auto.offset.reset是一个用于指定如何重置消费者组(Consumer Group)的位置的参数。它有两种可能的值:earliest和latest。-
earliest:
- 一旦某条消息被消费并提交到Zookeeper(Kafka的元数据存储),该消息将被标记为已消费。
- 如果消费者组中的某个Topic的所有分区都没有已提交的offset,那么消费者将从头开始消费。
- 如果消费者组中的某个Topic的部分分区有已提交的offset,那么消费者将从这些已提交的offset开始消费。
- 如果消费者组中的某个Topic的所有分区都有已提交的offset,那么消费者将从这些已提交的offset开始消费。
-
latest:
- 一旦某条消息被消费并提交到Zookeeper,该消息将被标记为已消费。
- 如果消费者组中的某个Topic的所有分区都没有已提交的offset,那么消费者将从头开始消费。
- 如果消费者组中的某个Topic的部分分区有已提交的offset,那么消费者将从这些已提交的offset开始消费。
- 如果消费者组中的某个Topic的所有分区都有已提交的offset,那么消费者将从这些已提交的offset开始消费。
-
none:
- 如果消费者组中的某个Topic的所有分区都没有已提交的offset,那么消费者将从头开始消费。
- 如果消费者组中的某个Topic的部分分区有已提交的offset,那么消费者将从这些已提交的offset开始消费。
- 如果消费者组中的某个Topic的所有分区都有已提交的offset,那么消费者将从这些已提交的offset开始消费。
关于重启问题,通常情况下,即使Kafka服务本身重启,但是消费者组和其对应的topic不会自动重启,除非你设置了特殊的恢复策略或者手动进行恢复操作。
- 关于auto.offset.reset=earliest vs auto.offset.reset=latest的问题:
earliest适用于大多数情况,因为它确保消费者能够从已知的数据点开始消费,而不会丢失任何信息。latest适用于那些在某些情况下,比如生产者错误地发送了消息但随后取消了这条消息的情况下,需要保证消费者能够消费所有未消费的消息的情况。
总的来说,在大多数情况下,使用
earliest参数会是更好的选择,因为这可以提供更稳定的服务,并且有助于避免因生产者错误导致的消息丢失。解决 无用评论 打赏 举报-