kafka enable.auto.commit和auto.offset.reset使用说明

enable.auto.commit

是否自动提交offset,默认是true。

auto.offset.reset

表示自动重置 offset。

auto.offset.reset 参数定义了当无法获取消费分区的位移时从何处开始消费。例如:当 Broker 端没有 offset(如第一次消费或 offset 超过7天过期)时如何初始化 offset,当收到 OFFSET_OUT_OF_RANGE 错误时如何重置 Offset。

earliest:自动重置到 partition 的最小 offset。
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费。
latest:默认为 latest,表示自动重置到 partition 的最大 offset。
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据。
none:不自动进行 offset 重置,抛出 OffsetOutOfRangeException 异常。
topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常。

auto.offset.reset=none 使用说明

使用背景

不希望发生 offset 自动重置的情况,因为业务不允许发生大规模的重复消费。

注意:

此时消费组在第一次消费的时候就会找不到 offset 而报错,这时就需要在 catch 里手动设置 offset。

使用说明

auto.offset.reset 设置为 None 以后,可以避免 offset 自动重置的问题,但是当增加分区的时候,因为关闭了自动重置机制,客户端不知道新的分区要从哪里开始消费,则会产生异常,此时需要人工去设置消费分组 offset 并消费。

使用方式

消费者在消费时,当 consumer 设置 auto.offset.reset=none, 捕获到 NoOffsetForPartitionException 异常,在 catch 里自己设置 offset。您可以根据自身业务情况选择以下方式中的其中一种。

指定 offset,这里需要自己维护 offset,方便重试。

指定从头开始消费。

指定 offset 为最近可用的 offset。

根据时间戳获取 offset,设置 offset。

总结:

package com.tencent.tcb.operation.ckafka.plain;


import com.google.common.collect.Lists;
import com.tencent.tcb.operation.ckafka.JavaKa
`kafka.consumer.sh` 是Apache Kafka提供的命令行工具,用于消费Kafka主题(topic)的消息。如果你想通过这个脚本消费所有分区的消息,你需要指定一些关键参数: 1. **消费者组(Consumer Group)**: 首先,需要创建一个消费者组,这是Kafka消息消费的核心单位。使用 `-g` 或 `--group-id` 参数设置消费者组名。 2. **主题(Topic)**: 指定你想要消费的主题,使用 `-t` 或 `--topic` 参数,可以一次指定多个主题用逗号分隔。 3. **消费模式(Consumer Mode)**: 默认情况下,`kafka.consumer.sh` 支持拉取模式 (`pull`) 推拉混合模式 (`fetch`)。如果想消费所有分区的消息,通常推荐使用 `fetch` 模式,因为它能批量获取数据。 4. **偏移量策略(Offset Commit Strategy)**: 为了持续消费,需要处理消费进度。你可以选择自动提交(`auto-commit`)或手动提交(`manual-commit`)偏移量。如果你希望从头开始消费所有消息,可以选择清空旧的偏移量 (`from-beginning` 或 `earliest`). 5. **配置文件(Configuration File)**: 可能还需要提供Kafka客户端配置文件 (`config.properties`),其中包含连接服务器、加密等信息。 示例命令结构可能类似这样(假设你已经在环境变量中设置了`KAFKA_HOME`指向安装目录): ```bash $ KAFKA_HOME/bin/kafka-console-consumer.sh \ --bootstrap-server <your-bootstrap-servers> \ --group <your-group-id> \ --topic <topic1>,<topic2>,... \ --property 'enable.auto.commit=false' \ --property 'auto.offset.reset=earliest' \ --from-beginning ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值