为什么设置enable.idempotence = true后kafka中仍然有重复消息

问题描述 投票:0回答:1

我有一个关于如何避免向kafka服务器发送重复消息的问题。我注意到我能够一次又一次地发送相同的消息,它们确实出现在消息系统中。

我尝试将 enable.idempotence 设置为 true,这在应用程序日志中得到验证:

2023-02-25 17:47:58.111 INFO 23828 --- [nio-9091-exec-1] o.a.k.clients.producer.ProducerConfig:ProducerConfig 值:acks = 1 batch.size = 16384 bootstrap.servers = [localhost: 9092] connections.max.idle.ms = 540000 enable.idempotence = true

但我仍然能够向 kafka 发布相同的消息,并且我确实看到了重复的消息

“Hello duplicatemessage” 偏移量:15 键:空 时间戳:2023-02-25 18:03:12.367 标头:TypeId:java.lang.String

“Hello duplicatemessage” 偏移量:16 键:空 时间戳:2023-02-25 18:03:16.239 标头:TypeId:java.lang.String

“Hello duplicatemessage” 偏移量:17 键:空 时间戳:2023-02-25 18:03:42.966 标头:TypeId:java.lang.String

我认为不应该发布重复的消息。

这样对吗?如果不是,我们如何避免重复消息?

apache-kafka duplicates message
1个回答
0
投票

你理解错了

您的应用程序作为生产者,可以发送相同的消息 N 次。它是重复的,只为你。不是从卡夫卡的角度来看。

Kafka idempotent producer - 特别针对kafka-client在重试时,它会保证不会添加相同的消息两次。也就是说,您的申请只发送一次。但由于网络问题,kafka 客户端重试了几次 - 这里的 kafka-client 作为幂等生产者,不会添加重复消息。

© www.soinside.com 2019 - 2024. All rights reserved.