Kafka 生产者的 request.timeout.ms 和 timeout.ms 属性之间的区别

Difference between request.timeout.ms and timeout.ms properties of Kafka producer

参考 kafka documentation,Kafka 消息生产者配置具有 request.timeout.mstimeout.ms 属性。阅读这两个属性的描述,我无法清楚地区分它们。

谁能用小例子解释一下区别。

request.timeout.ms是客户端配置的超时时间。它表示客户端将等待服务器响应请求的时间。

timeout.ms是Kafka集群中leader上配置的超时时间。这是服务器端的超时。例如,如果您将 acks 设置为 all,服务器将不会响应,直到它的所有跟随者都将响应发送回领导者。领导者将等待 timeout.ms 时间让所有追随者做出回应。

因此客户端向服务器(领导者)发送请求。根据 acks 设置,服务器将等待或响应客户端。 timeout.ms 是领导者等待其追随者的时间,而 request.timeout.ms 是客户端等待服务器(领导者)的时间。

它们都用于公共底层网络客户端,表示等待请求响应的最长时间,尽管 timeout.ms 标记为 'Deprecated'。其实timeout.ms只用在producer端,request.timeout.ms可以定义给client(包括producer和consumer)和server(复制线程)。

Kafka 建议用户指定请求。timeout.ms 而不是 timeout.ms