|NO.Z.00038|——————————|BigDataEnd|——|Hadoop&kafka.V23|——|kafka.v23|消费者拦截器参数配置|

一、消费者拦截器参数配置:消费者参数配置补充
配置项 说明
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 接口。
拦截器可用于对消费者接收到的消息进行拦截处理。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示