kafka consumer相关文档阅读
This commit is contained in:
@@ -420,10 +420,19 @@ rebalance通常有两个阶段,`revocation`和`assignment`,即撤销当前
|
|||||||
|
|
||||||
通常情况下,commitAsync相较commitSync是更不安全的,在宕机之前提交失败将会造成消息的重复消费。可以通过在回调中使用commitSync来减轻消息的重复消费风险。
|
通常情况下,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漏消费或是重复消费,可以通过事务来保证每条消息只会被消费一次。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user