我正在使用新的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");
Run Code Online (Sandbox Code Playgroud)
在高负载的某些时刻请求平均响应时间是4秒,但我没有得到任何超时错误.
有人知道这个超时是如何计算的,它何时开始计算以及何时结束?有没有办法配置从生成器的send方法被调用的那一刻开始的超时?
use*_*864 10
新timeout.ms属性与ack生产者的配置一起使用.例如,考虑以下情况
ack = all
timeout.ms = 3000
Run Code Online (Sandbox Code Playgroud)
在这种情况下ack = all意味着领导者不会响应,直到它收到完整的同步副本(ISR)的确认,并且获得此确认的最长等待时间将是3000 ms.如果在给定时间内没有收到预期的确认数,则会返回错误.
另请注意,此属性不考虑网络延迟.
从doc页面:
该配置控制服务器等待来自关注者的确认以满足生产者使用acks配置指定的确认要求的最长时间.如果超时结束时未满足请求的确认数,则将返回错误.此超时是在服务器端测量的,不包括请求的网络延迟.
因此,ack=1如果领导者无法回应(在将记录写入其自己的日志而不等待所有关注者的完全确认后),那么在您的情况下(我不是100%确定这一点,并且可以接受任何更正)抛出一个错误.
在新的 Kafka 2.0 Producer API 中,您可以使用以下属性之一:https : //kafka.apache.org/documentation/#producerconfigs
请参阅https://kafka.apache.org/20/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html 上的使用示例
超时现在由max.block.ms属性定义。
| 归档时间: |
|
| 查看次数: |
22255 次 |
| 最近记录: |