【发布时间】:2021-07-28 19:45:18
【问题描述】:
我们希望使用 exactly-once 语义将数据存储在 Kafka 中,以避免消息重复。
具有以下属性的生产者:
spring.kafka.producer.properties.acks=all
spring.kafka.producer.properties.enable.idempotence=true
Kafka 主题说明:
Topic: topicName PartitionCount: 1 ReplicationFactor: 1
Configs: Topic: topicName Partition: 0 Leader: 1 Replicas: 1 Isr: 1
集成测试:
@Test
void exactlyOnceTest() {
kafkaTemplate.send("topicName", "key", "data");
kafkaTemplate.send("topicName", "key", "data");
kafkaTemplate.send("topicName", "key", "data");
}
我们的预期是Kafka中应该只存储一条消息,但实际结果是3条消息。
如何使 excatly-once 语义与 Kafka 一起使用?
我的配置中缺少什么?
【问题讨论】:
标签: java spring spring-boot apache-kafka idempotent