Apache Kafka 幂等生产者

FreeGuideOnline 最新 2026-07-12

properties enable.idempotence=true


此时底层会自动调整:

- `acks` 强制设为 `all`(即 `-1`),确保副本同步落盘。
- `retries` 默认设为 `Integer.MAX_VALUE`(可以手动调小)。
- `max.in.flight.requests.per.connection` 若未指定则设为 `5`,保证在单连接内最多有 5 个未确认请求,确保顺序。
- 自动分配 PID(非事务场景)。

Java 示例:

```java
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("enable.idempotence", "true");

KafkaProducer<String, String> producer = new KafkaProducer<>(props);