group-id: du
enable-auto-commit: true
如果为true,则消费者的偏移量将在后台定期提交,默认值为true是否自动确认offset
auto-commit-interval: 5000
如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000(自动确认offset的时间间隔)
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
max-poll-records: 500
一次调用poll()操作时返回的最大记录数,默认值为500
auto-offset-reset
当Kafkā中没有初始偏移量或当前偏移量在服务器中不存在(如,数据被删除了),该
如何处理?
earliest:自动重置偏移量到最早的偏移量
latest:自动重置偏移量为最新的偏移量
none:如果消费组原来的(previous)偏移量不存在,则向消费者抛异常
anything:向消费者抛异常
session.timeout.ms
当使用Kafka的消费组的时候,消费者周期性地向broker发送心跳表明自己的存在。
如果经过该超时时间还没有收到消费者的心跳,则broker将消费者从消费组移除,并启动再平衡
该值必须在broker配置
group.min.session.timeout.ms 和group.max.session.timeout.ms 之间
heartbeat.interval.ms
当使用消费组的时候,该条目指定消费者向消费者协调器 发送心跳的时间间隔。
心跳是为了确保消费者会话的活跃状态, 同时在消费者加入或离开消费组的时候方便进行再平衡。
该条目的值必须小于 session.timeout.ms ,也不应该高于 session.timeout.ms 的1/3。可以将其调整得更小,以控制正常重新平衡的预期时间。
max.poll.interval.ms
使用消费组的时候调用poll()方法的时间间隔。 该条目指定了消费者调用poll()方法的最大时间间隔。 如果在此时间内消费者没有调用poll()方法, 则broker认为消费者失败,触发再平衡, 将分区分配给消费组中其他消费者。
fetch.min.bytes
服务器对每个拉取消息的请求返回的数据量最小值。
如果数据量达不到这个值,请求等待,以让更多的数据累积,达到这个值之后响应请求
默认设置是1个字节,表示只要有一个字节的数据,就立即响应请求,或者在没有数据的时候请求超时
将该值设置为大一点儿的数字,会让服务器等待稍微长一点儿的时间以累积数据。如此则可以提高服务器的吞吐量,代价是额外的延迟时间。
fetch.max.wait.ms
如果服务器端的数据量达不到 fetch.min.bytes 的话,服务器端不能立即响应请求
该时间用于配置服务器端阻塞请求的最大时长。
fetch.max.bytes
务器给单个拉取请求返回的最大数据量。 消费者批量拉取消息,如果第一个非空消息批次的值比该值大, 消息批也会返回,以让消费者可以接着进行。 即该配置并不是绝对的最大值。 broker可以接收的消息批最大值通过 message.max.bytes (broker配置) 或 max.message.bytes (主题配置)来指定。 需要注意的是,消费者一般会并发拉取请求。
connections.max.idle.ms
在这个时间之后关闭空闲的连接。
check.crcs
自动计算被消费的消息的CRC32校验值。可以确保在传输过程中或磁盘存储过程中消息没有被破坏。它会增加额外的负载,在追求极致性能的场合禁用。
exclude.internal.topics
是否内部主题应该暴露给消费者。如果该条目设置为true,则只能先订阅再拉取。
isolation.level
控制如何读取事务消息。 如果设置了 read_committed ,消费者的poll()方法只会 返回已经提交的事务消息。 如果设置了 read_uncommitted (默认值), 消费者的poll方法返回所有的消息,即使是已经取消的事务消息。 非事务消息以上两种情况都返回。 消息总是以偏移量的顺序返回。 read_committed 只能返回到达LSO的消息。 在LSO之后出现的消息只能等待相关的事务提交之后才能看到。 结果, read_committed 模式,如果有为提交的事务, 消费者不能读取到直到HW的消息。 read_committed 的seekToEnd方法返回LSO
max.partition.fetch.bytes
- 对每个分区,服务器返回的最大数量。消费者按批次拉取数据
- 如果非空分区的第一个记录大于这个值,批处理依然可以返回,以保证消费者可以进行下去
- broker接收批的大小由 message.max.bytes (broker参数)
- max.message.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
拦截器可用于对消费者接收到的消息进行拦截处理。