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



我正在编写消息以及kafka的时间戳。如果我重试,时间戳可能会更改,并且正在写作的制作人,但是消息内容和消息ID是相同的。消息ID是在消息到达此处之前生成的,这是一个UUID。

如果成功地写给主题,但是ACK丢失了,我该如何确保Kafka不接受第二份副本,以便链条恢复了服务?消费者一定永远不会看到重复的消息。

通常,有两种情况下可以将同一消息发送到kafka:

  1. 在正常操作期间,您的应用程序有意将带有相同UUID的消息发送给Kafka,您希望Kafka进行重复数据删除。
  2. 当您向Kafka发送消息时,您的代码或Kafka经纪人失败了,您想确保尝试再次发送的消息不会重复,并且也不会丢失。

我假设您对案例 2。感兴趣。Kafka开发人员的呼叫案例2。恰好交付。KAFKA的最新版本支持交易,以便确切地交付。关于Kafka如何与代码片段一起完成的完整说明,可以在Confluent(Kafka Company(的本文中找到。

最新更新