Apache kafka 卡夫卡-max.in.flight.requests.per.connection是每个制作人还是每个会话?

Apache kafka 卡夫卡-max.in.flight.requests.per.connection是每个制作人还是每个会话?,apache-kafka,confluent-platform,Apache Kafka,Confluent Platform,我正在浏览文档,对参数“max.in.flight.requests.per.connection”有点混淆 在阻塞之前,客户端将在单个连接上发送的最大未确认请求数。请注意,如果此设置设置为大于1,并且存在发送失败的情况,则存在由于重试而导致消息重新排序的风险(即,如果启用了重试) 短语“未确认的请求”是指每个生产者、每个连接或每个客户端?它是指每个分区。Kafka内部可能会多路复用连接(例如,使用一个连接发送多个请求,用于由同一代理处理的不同主题/分区),或者每个分区都有一个单独的连接,但这些

我正在浏览文档,对参数“max.in.flight.requests.per.connection”有点混淆

在阻塞之前,客户端将在单个连接上发送的最大未确认请求数。请注意,如果此设置设置为大于1,并且存在发送失败的情况,则存在由于重试而导致消息重新排序的风险(即,如果启用了重试)

短语“未确认的请求”是指每个生产者、每个连接或每个客户端?

它是指每个分区。Kafka内部可能会多路复用连接(例如,使用一个连接发送多个请求,用于由同一代理处理的不同主题/分区),或者每个分区都有一个单独的连接,但这些都是性能问题,主要在客户端内处理

重试
的文档提供了更多信息(并澄清了每个分区的情况)

设置一个大于零的值将导致客户机重新发送其发送失败且可能出现暂时错误的任何记录。请注意,此重试与客户端在收到错误后重新发送记录没有什么不同。允许重试而不将max.in.flight.requests.per.connection设置为1可能会更改记录的顺序,因为如果将两个批发送到单个分区,并且第一个失败并重试,但第二个成功,则第二个批中的记录可能会首先出现。另外请注意,如果delivery.timeout.ms配置的超时在成功确认之前首先过期,则在重试次数用尽之前,生成请求将失败。用户通常更希望不设置此配置,而是使用delivery.timeout.ms来控制重试行为


嗯。然而,它听起来像是“每个制作人”,正如制作人配置中提到的。在任何情况下,它都会在内部使用“每个分区”?它肯定是每个分区。我不知道还能说些什么,或者给你指些什么,让你放心。