如何在 Kafka 主题中检测重复的消息?

5

您好,我有一个类似下图的架构。

我有两个 Kafka 生产者,它们会频繁地向 Kafka 主题发送重复消息。

是否有一种简单的方式来处理这种情况,就像服务总线主题一样。

感谢您的帮助。

enter image description here


你的问题比较抽象... 你的意思是一个生产者多次发送同一条消息吗?如果是的话,你可以利用Kafka 0.11中添加的“幂等生产者”。 - Matthias J. Sax
1
不,我有两个不同的生产者,它们有时会将相同的消息写入kafka主题。 - ankush reddy
1
@sap1ens在下面为这个案例给出了一个很好的答案。 - Matthias J. Sax
2个回答

8
假设您实际上有多个不同的生产者编写相同的消息,我可以看到以下两个选项:
1)将所有重复消息写入单个Kafka主题,然后使用类似于Kafka Streams(或任何其他流处理器,如Flink、Spark Streaming等)的工具来去重消息并将去重结果写入新主题。
这是一个很好的Kafka Streams示例,使用状态存储:https://github.com/confluentinc/kafka-streams-examples/blob/4.0.0-post/src/test/java/io/confluent/examples/streams/EventDeduplicationLambdaIntegrationTest.java 2)确保重复的消息具有相同的消息键。之后,您需要启用日志压缩,Kafka将最终消除重复项。这种方法不太可靠,但如果适当调整压缩设置,它可能会给您想要的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接