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

时间:2018-01-03 00:03:12

标签: apache-kafka kafka-consumer-api azureservicebus kafka-producer-api apache-kafka-streams

您好我的架构类似于下图所示。

我有两个kafka制作人,它会向kafka主题发送消息,并经常发送重复消息。

有没有办法可以轻松处理这种情况,比如服务总线主题。

感谢您的帮助。

enter image description here

2 个答案:

答案 0 :(得分:3)

假设您实际上有多个不同的生产者编写相同的消息,我可以看到这两个选项:

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)确保重复的消息具有相同的消息密钥。之后,您需要启用log compaction,Kafka将最终删除重复项。这种方法不太可靠,但是如果你正确地调整压缩设置,它可能会给你你想要的东西。

答案 1 :(得分:0)