我正在使用新的 kafka 生产者客户端并将 timeout.ms 属性设置为 50 毫秒。
这是生产者中使用的完整配置:
props.put("acks", "1");
props.put("buffer.memory", "33554432");
props.put("retries", "1");
props.put("batch.size", "16384");
props.put("client.id", "foo");
props.put("linger.ms", "0");
props.put("timeout.ms", "50");
在某些高负载时刻,请求平均响应时间为 4 秒,但我没有收到任何超时错误。
有人知道这个超时是如何计算的,什么时候开始计算,什么时候结束?有没有办法配置从调用生产者的发送方法那一刻开始的超时?
The new timeout.ms
财产与ack
生产者的配置。例如考虑以下情况
ack = all
timeout.ms = 3000
在这种情况下ack = all
意味着领导者在收到完整同步副本集(ISR)的确认之前不会做出响应,并且获得此确认的最大等待时间为3000 ms
。如果在给定时间内没有收到预期数量的确认,它将返回错误。
另请注意,此属性不考虑网络延迟。
从文档页面:
该配置控制服务器等待追随者确认的最长时间,以满足生产者使用 acks 配置指定的确认要求。如果超时后未满足请求的确认数量,则会返回错误。该超时是在服务器端测量的,不包括请求的网络延迟。
所以在你的情况下ack=1
(我对此不是 100% 确定,如果适用的话,愿意接受任何更正)如果领导者无法在 50 毫秒内响应(将记录写入自己的日志而不等待所有追随者的完全确认),则应抛出错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)