Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 我能确保卡夫卡不会';你不接受同一封邮件的两份副本吗?_Apache Kafka - Fatal编程技术网

Apache kafka 我能确保卡夫卡不会';你不接受同一封邮件的两份副本吗?

Apache kafka 我能确保卡夫卡不会';你不接受同一封邮件的两份副本吗?,apache-kafka,Apache Kafka,我在给卡夫卡写信息和时间戳。如果我重试,时间戳可能会更改,正在写入的生产者也会更改,但消息内容和消息id是相同的。消息id是在消息到达这里之前生成的,它是一个uuid 如果第二个副本成功写入主题,但ack丢失,因此服务链上游重试,我如何确保kafka不接受第二个副本?消费者决不能看到重复的消息 通常有两种情况下,同一信息可以发送给卡夫卡: 在正常操作期间,您的应用程序故意向Kafka发送具有相同uuid的消息,并且您希望Kafka执行重复数据消除 当您向卡夫卡发送消息时,您的代码或卡夫卡代理失败

我在给卡夫卡写信息和时间戳。如果我重试,时间戳可能会更改,正在写入的生产者也会更改,但消息内容和消息id是相同的。消息id是在消息到达这里之前生成的,它是一个uuid


如果第二个副本成功写入主题,但ack丢失,因此服务链上游重试,我如何确保kafka不接受第二个副本?消费者决不能看到重复的消息

通常有两种情况下,同一信息可以发送给卡夫卡:

  • 在正常操作期间,您的应用程序故意向Kafka发送具有相同uuid的消息,并且您希望Kafka执行重复数据消除
  • 当您向卡夫卡发送消息时,您的代码或卡夫卡代理失败,您希望确保再次尝试发送的消息没有重复,也没有丢失

  • 我想您对案例2感兴趣。。卡夫卡开发人员的呼叫案例2.仅一次交付。Kafka的最新版本支持事务,以便能够实现一次交付。关于卡夫卡是如何做到这一点的完整解释以及代码片段可以在这里找到。

    通常,有两种情况下,相同的消息可以发送给卡夫卡:

  • 在正常操作期间,您的应用程序故意向Kafka发送具有相同uuid的消息,并且您希望Kafka执行重复数据消除
  • 当您向卡夫卡发送消息时,您的代码或卡夫卡代理失败,您希望确保再次尝试发送的消息没有重复,也没有丢失

  • 我想您对案例2感兴趣。。卡夫卡开发人员的呼叫案例2.仅一次交付。Kafka的最新版本支持事务,以便能够实现一次交付。关于卡夫卡是如何做到这一点的完整解释以及代码片段可以在这里找到。

    对。就正确性而言,这只会减少一次交付。这个案子已经处理好了。因此,这将是一个性能优化。我可以避免重复的消息吗,还是我必须接受它呢?从链接的博客文章:生产者发送操作现在是幂等的。如果发生导致生产者重试的错误,生产者多次发送的同一消息将只写入代理上的Kafka日志一次。对于单个分区,幂等生产者发送消除了由于生产者或代理错误而导致重复消息的可能性。要启用此功能并获得每个分区一次语义,这意味着没有重复,没有数据丢失,并且为了语义,请将生产者配置为设置“enable.idemptence=true”。对。就正确性而言,这只会减少一次交付。这个案子已经处理好了。因此,这将是一个性能优化。我可以避免重复的消息吗,还是我必须接受它呢?从链接的博客文章:生产者发送操作现在是幂等的。如果发生导致生产者重试的错误,生产者多次发送的同一消息将只写入代理上的Kafka日志一次。对于单个分区,幂等生产者发送消除了由于生产者或代理错误而导致重复消息的可能性。若要启用此功能并在每个分区中只获取一次语义,这意味着没有重复,没有数据丢失,并且为了语义,请将生产者配置为设置“enable.idemponence=true”。