发生消费位点重置的两种情况
- 当服务端不存在曾经提交过的位点时(比如客户端第一次上线);
- 当从非法位点拉取消息时(比如某个分区最大位点是10,但客户端却从11开始拉取消息)。
配置重置策略
Java 客户端可以通过auto.offset.reset来配置重置策略,主要策略有:
- latest:从最大位点开始消费;
- earliest:从最小位点开始消费;
- none:不做任何操作,也即不重置。
策略配置建议
- 强烈建议设置成“latest”,而不要设置成“earliest”,避免因位点非法时从头开始消费,从而造成大量重复
- 如果是客户自己管理位点,可以设置成”none”;
- 拉取大消息。
拉取消息注意事项
消费过程是由客户端主动去服务端拉取消息的,在拉取大消息时,需要注意控制拉取速度,注意修改配置。
- max.poll.records:如果单条消息超过1MB,建议这里设置为1;
- fetch.max.bytes:设置比单条消息的大小略大一点;
- max.partition.fetch.bytes:设置比单条消息的大小略大一点。拉取大消息的核心是一条一条拉。