一、消费者拦截器参数配置:消费者参数配置补充
配置项 | 说明 |
bootstrap.servers | 建立到Kafka集群的初始连接用到的host/port列表。 客户端会使用这里指定的所有的host/port来建立初始连接。 这个配置仅会影响发现集群所有节点的初始连接。 形式:host1:port1,host2:port2... 这个配置中不需要包含集群中所有的节点信息。 最好不要配置一个,以免配置的这个节点宕机的时候连不上。 |
group.id | 用于定义当前消费者所属的消费组的唯一字符串。 如果使用了消费组的功能subscribe(topic) , 或使用了基于Kafka的偏移量管理机制,则应该配置group.id。 |
auto.commit.interval.ms | 如果设置了enable.auto.commit 的值为true, 则该值定义了消费者偏移量向Kafka提交的频率。 |
auto.offset.reset | 如果Kafka中没有初始偏移量或当前偏移量在服务器中不存在 (比如数据被删掉了): earliest:自动重置偏移量到最早的偏移量。 latest:自动重置偏移量到最后一个 none:如果没有找到该消费组以前的偏移量没有找到,就抛异常。 其他值:向消费者抛异常。 |
fetch.min.bytes | 服务器对每个拉取消息的请求返回的数据量最小值。 如果数据量达不到这个值,请求等待,以让更多的数据累积, 达到这个值之后响应请求。 默认设置是1个字节,表示只要有一个字节的数据,就立即响应请求, 或者在没有数据的时候请求超时。 将该值设置为大一点儿的数字, 会让服务器等待稍微长一点儿的时间以累积数据。 如此则可以提高服务器的吞吐量,代价是额外的延迟时间。 |
fetch.max.wait.ms | 如果服务器端的数据量达不到fetch.min.bytes 的话, 服务器端不能立即响应请求。 该时间用于配置服务器端阻塞请求的最大时长。 |
fetch.max.bytes | 服务器给单个拉取请求返回的最大数据量。 消费者批量拉取消息,如果第一个非空消息批次的值比该值大, 消息批也会返回,以让消费者可以接着进行。 即该配置并不是绝对的最大值。 broker可以接收的消息批最大值通过message.max.bytes (broker配置) 或max.message.bytes (主题配置)来指定。 需要注意的是,消费者一般会并发拉取请求。 |
enable.auto.commit | 如果设置为true,则消费者的偏移量会周期性地在后台提交。 |
connections.max.idle.ms | 在这个时间之后关闭空闲的连接。 |
check.crs | 自动计算被消费的消息的CRC32校验值。 可以确保在传输过程中或磁盘存储过程中消息没有被破坏。 它会增加额外的负载,在追求极致性能的场合禁用。 |
exclude.internal.topics | 是否内部主题应该暴露给消费者。 如果该条目设置为true,则只能先订阅再拉取。 |
isolation.level | 控制如何读取事务消息。 如果设置了read_committed , 消费者的poll()方法只会返回已经提交的事务消息。 如果设置了read_uncommitted (默认值), 消费者的poll方法返回所有的消息,即使是已经取消的事务消息。 非事务消息以上两种情况都返回。 消息总是以偏移量的顺序返回。 read_committed 只能返回到达LSO的消息。 在LSO之后出现的消息只能等待相关的事务提交之后才能看到。 结果, read_committed 模式,如果有为提交的事务, 消费者不能读取到直到HW的消息。 read_committed 的seekToEnd方法返回LSO。 |
heartbeat.interval.ms | 当使用消费组的时候,该条目指定消费者向消费者协调器发送心跳的时间间隔。 心跳是为了确保消费者会话的活跃状态, 同时在消费者加入或离开消费组的时候方便进行再平衡。 该条目的值必须小于session.timeout.ms , 也不应该高于session.timeout.ms 的1/3。 可以将其调整得更小,以控制正常重新平衡的预期时间。 |
session.timeout.ms | 当使用Kafka的消费组的时候, 消费者周期性地向broker发送心跳表明自己的存在。 如果经过该超时时间还没有收到消费者的心跳, 则broker将消费者从消费组移除,并启动再平衡。 该值必须在broker配置group.min.session.timeout.ms 和 group.max.session.timeout.ms 之间。 |
max.poll.records | 一次调用poll()方法返回的记录最大数量。 |
max.poll.interval.ms | 使用消费组的时候调用poll()方法的时间间隔。 该条目指定了消费者调用poll()方法的最大时间间隔。 如果在此时间内消费者没有调用poll()方法, 则broker认为消费者失败,触发再平衡,将分区分配给消费组中其他消费者。 |
max.partition.fetch.bytes | 对每个分区,服务器返回的最大数量。消费者按批次拉取数据。 如果非空分区的第一个记录大于这个值,批处理依然可以返回, 以保证消费者可以进行下去。 broker接收批的大小由message.max.bytes (broker参数) 或max.message.bytes (主题参数)指定。fetch.max.bytes 用于限制消费者单次请求的数据量。 |
send.buffer.bytes | 用于TCP发送数据时使用的缓冲大小(SO_SNDBUF), -1表示使用OS默认的缓冲区大小。 |
retry.backoff.ms | 在发生失败的时候如果需要重试, 则该配置表示客户端等待多长时间再发起重试。该时间的存在避免了密集循环。 |
request.timeout.ms | 客户端等待服务端响应的最大时间。如果该时间超时, 则客户端要么重新发起请求,要么如果重试耗尽,请求失败。 |
reconnect.backoff.ms | 重新连接主机的等待时间。避免了重连的密集循环。 该等待时间应用于该客户端到broker的所有连接。 |
reconnect.backoff.max.ms | 重新连接到反复连接失败的broker时要等待的最长时间(以毫秒为单位)。 如果提供此选项,则对于每个连续的连接失败, 每台主机的退避将成倍增加,直至达到此最大值。 在计算退避增量之后,添加20%的随机抖动以避免连接风暴。 |
receive.buffer.bytes | TCP连接接收数据的缓存(SO_RCVBUF)。 -1表示使用操作系统的默认值。 |
partition.assignment.strategy | 当使用消费组的时候,分区分配策略的类名。 |
metrics.sample.window.ms | 计算指标样本的时间窗口。 |
metrics.recording.level | 指标的最高记录级别。 |
metrics.num.samples | 用于计算指标而维护的样本数量 |
interceptor.classes | 拦截器类的列表。默认没有拦截器拦截器是消费者的拦截器, 该拦截器需要实现org.apache.kafka.clients.consumer.ConsumerInterceptor 接口。 拦截器可用于对消费者接收到的消息进行拦截处理。 |