在Kafka中,max.in.flight.requests.per.connection是控制在每个连接上可以发送未确认的请求的最大数量。当我们需要确保消息的顺序时,max.in.flight.requests.per.connection需要设置为1,即在发送未确认的请求之前,必须等待响应。但如果我们需要在保持一定顺序的前提下提高吞吐量,则可以将max.in.flight.requests.per.connection设置为大于1的数字。
要设置max.in.flight.requests.per.connection的最大值,可以通过配置文件或代码进行设置。以下是通过代码设置的示例:
// 创建生产者实例
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Kafka 集群地址
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("max.in.flight.requests.per.connection", "10"); // 设置 max.in.flight.requests.per.connection
Producer producer = new KafkaProducer<>(props);
上述代码将max.in.flight.requests.per.connection设置为10。如果要将其设置为1,则将其值更改为1即可。在本示例中,我们还设置了其他属性,例如 bootstrap.servers 和 key.serializer,这些属性也应根据需要进行更改。
下一篇:保持顺序的numpy数组的独特行