我可以确保Kafka不接受同一邮件的两个副本吗?

时间:2018-02-18 17:33:45

标签: apache-kafka

我正在将消息和时间戳一起写入kafka。如果我重试,时间戳可能会改变,并且正在编写的生产者,但消息内容和消息ID是相同的。消息ID在消息到达之前生成,它是一个uuid。

我怎样才能确保kafka不接受第二个副本,如果它成功写入主题,但是ack丢失了,那么链上的服务会重试?消费者绝不能看到重复的消息。

1 个答案:

答案 0 :(得分:2)

一般情况下,有两种情况可以向Kafka发送相同的消息:

  1. 在正常操作期间,您的应用程序故意将具有相同uuid的消息发送给Kafka,并且您希望Kafka执行重复数据删除。
  2. 当您向Kafka发送邮件时,您的代码或Kafka经纪人会失败,并且您希望确保您尝试再次发送的邮件不会重复,也不会丢失。
  3. 我认为您对 2 的情况感兴趣。 Kafka开发人员的呼叫案例 2。完全一次交付。最新版本的Kafka支持交易,以便一次性交付。有关Kafka如何与代码段一起完整解释,请参阅此article by Confluent (the Kafka company)