Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录

一、消费者组详细消费流程图解

  1. 创建一个消费者网络连接客户端,主要用于与kafka集群进行交互,如下图所示:
  2. 调用sendFetches发送消费请求,如下图所示:
    (1)、Fetch.min.bytes每批次最小抓取大小,默认1字节
    (2)、fetch.max.wait.ms一批数据最小值未达到的超时时间,默认500ms
    (3)、Fetch.max.bytes每批次最大抓取大小,默认50m
  3. 通过onSuccess回调,把数据拉取到queue队列中,如下图所示:
  4. 经过反序列化、拦截器、数据处理周,调用FetchedRecords从队列中抓取数据,如下图所示:

二、消费者的重要参数

参数名称 描述
bootstrap.servers 向 Kafka集群建立初始连接用到的 host/port列表。
key.deserializer 和value.deserializer 指定接收消息的 key 和 value 的反序列化类型。一定要写全类名。
group.id 标记消费者所属的消费者组。
enable.auto.commit 默认值为 true,消费者会自动周期性地向服务器提交偏移量。
auto.commit.interval.ms 如果设置了 enable.auto.commit 的值为 true, 则该值定义了消费者偏移量向 Kafka提交的频率,默认 5s。
auto.offset.reset 当 Kafka 中没有初始偏移量或当前偏移量在服务器中不存在(如,数据被删除了),该如何处理? earliest:自动重置偏移量到最早的偏移量。 latest:默认,自动重置偏移量为最新的偏移量。 none:如果消费组原来的(previous)偏移量不存在,则向消费者抛异常。 anything:向消费者抛异常。
offsets.topic.num.partitions __consumer_offsets 的分区数,默认是 50 个分区。
heartbeat.interval.ms Kafka 消费者和 coordinator 之间的心跳时间,默认 3s。该条目的值必须小于 session.timeout.ms也不应该高于session.timeout.ms 的 1/3。
session.timeout.ms Kafka 消费者和 coordinator 之间连接超时时间,默认 45s。超过该值,该消费者被移除,消费者组执行再平衡。
max.poll.interval.ms 消费者处理消息的最大时长,默认是 5 分钟。超过该值,该消费者被移除,消费者组执行再平衡。
fetch.min.bytes 默认 1 个字节。消费者获取服务器端一批消息最小的字节数。
fetch.max.wait.ms 默认 500ms。如果没有从服务器端获取到一批数据的最小字节数。该时间到,仍然会返回数据
fetch.max.bytes 默认 Default: 52428800(50 m)。消费者获取服务器端一批消息最大的字节数。如果服务器端一批次的数据大于该值(50m)仍然可以拉取回来这批数据,因此,这不是一个绝对最大值。一批次的大小受 message.max.bytes (brokerconfig)or max.message.bytes (topic config)影响。
max.poll.records 一次 poll拉取数据返回消息的最大条数,默认是 500 条。
相关推荐
happycao1236 小时前
记一次kafka消息丢失问题排查
kafka
喜欢猪猪6 小时前
Kafka是如何保证数据的安全性、可靠性和分区的
分布式·kafka
芊言芊语6 小时前
分布式消息服务Kafka版的详细解析和配置方式
分布式·kafka
方圆师兄14 小时前
docker快速搭建kafka
docker·容器·kafka
码爸14 小时前
flink kafka sink (scala)
flink·kafka·scala
圣圣不爱学习16 小时前
阿里云kafka消息写入topic失败
阿里云·kafka
丁总学Java16 小时前
maxwell 输出消息到 kafka
分布式·kafka·maxwell
码上一元19 小时前
消息队列:如何确保消息不会丢失?
kafka·消息队列·rocketmq
懒洋洋的华3691 天前
消息队列-Kafka(概念篇)
分布式·中间件·kafka
happycao1231 天前
kafka之路-01从零搭建环境到SpringBoot集成
kafka