kafka consumer相关文档阅读

This commit is contained in:
2023-11-30 00:05:51 +08:00
parent bace3202f5
commit f631fe6ec4

View File

@@ -420,10 +420,19 @@ rebalance通常有两个阶段`revocation`和`assignment`,即撤销当前
通常情况下commitAsync相较commitSync是更不安全的在宕机之前提交失败将会造成消息的重复消费。可以通过在回调中使用commitSync来减轻消息的重复消费风险。
##### kafka消费起始offset
通过`auto.offset.reset`属性可以配置当kafka broker中没有存储分区与特定消费者组offset关系时消费者消费的行为其可配置值如下
- earliest从分区最开始的位置进行消费
- latest默认值为latest当offset不存在时从最新的offset开始消费
- none当消费者组针对该分区没有找到offset记录时抛出异常
默认情况下,`auto.offset.reset`值为latest故而当消费者组新订阅一个topic时并不会从头开始消费分区中的历史消息而是从分区最新offset开始消费后续分区接收到的消息。
> ##### 自定义分区起始消费offset
> 除了配置上述属性指定消费起始位置外,还可以通过`KafkaConsumer#seek`接口来指定起始消费分区的offset位置。
> #### 消费指定时间开始的消息
> 如果在消费消息时,想要消费从指定时刻之后的消息,可以通过`kafkaConsumer#offsetsForTimes`接口能根据传入的分区和时间戳来得到该分区下指定时刻消息的起始offset返回offset为时间戳大于或等于指定时间戳的第一条消息对应offset
##### exactly-once语义
如果想要保证broker中消息不会被kafka漏消费或是重复消费可以通过事务来保证每条消息只会被消费一次。