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
Apache kafka 在Kafka中处理具有依赖关系的数据时的最佳实践?_Apache Kafka_Kafka Consumer Api_Apache Kafka Streams - Fatal编程技术网

Apache kafka 在Kafka中处理具有依赖关系的数据时的最佳实践?

Apache kafka 在Kafka中处理具有依赖关系的数据时的最佳实践?,apache-kafka,kafka-consumer-api,apache-kafka-streams,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,我们正在开发一个从不同来源获取数据的应用程序,一旦数据可用,我们就会对其进行处理,将其放在一起,然后将其转移到不同的主题 在我们的案例中,我们有3个主题,每个主题都将带来与不同主题的数据相关的数据,在这种情况下,生成的每个实体可能会在同一时间(或短时间)收到,也可能不会收到,这就是问题所在,因为在我们继续讨论这个主题之前,需要将这三个实体合并为一个实体 我们的想法是创建一个单独的主题,该主题将包含所有尚未处理的数据,然后有一个单独的线程,该线程将以固定的时间间隔检查该主题,并检查该主题的依赖项是

我们正在开发一个从不同来源获取数据的应用程序,一旦数据可用,我们就会对其进行处理,将其放在一起,然后将其转移到不同的主题

在我们的案例中,我们有3个主题,每个主题都将带来与不同主题的数据相关的数据,在这种情况下,生成的每个实体可能会在同一时间(或短时间)收到,也可能不会收到,这就是问题所在,因为在我们继续讨论这个主题之前,需要将这三个实体合并为一个实体

我们的想法是创建一个单独的主题,该主题将包含所有尚未处理的数据,然后有一个单独的线程,该线程将以固定的时间间隔检查该主题,并检查该主题的依赖项是否可用,如果可用,则从该单独主题中删除该实体,如果不可用,我们将这个实体保留在那里,直到它得到解决


在所有这些解释的最后,我的问题是,这样做是否合理,或者卡夫卡提供了其他良好的实践或策略来解决此类情况?

卡夫卡邮件可以在一段时间后根据保留策略清除,因此您需要将邮件存储在某个位置:

我可以看到以下选项,但每个问题都有可能解决:

  • 已处理所有邮件,并将“未处理邮件”转发到其他主题,例如
  • Kafka处理器API,用于使用主题A中的消息并将其存储到状态存储中
  • 按时间间隔计划标点()方法
  • 迭代以存储状态存储的所有消息
  • 检查相关性(如果可用),从状态存储中删除消息并对其进行处理,或发布回原始主题以再次进行处理
  • 你可以参考下面的链接

    好吧,通过主题压缩,您可以间接删除消息……我建议您使用Procesor API和状态存储。对于每个实体,您将其存储在状态存储中,并为每个新输入记录更新它,直到该实体完成为止——对于这种情况,您将从存储中删除它并
    context.forward()
    it。有关处理器API的更多详细信息,请查看Kafka Streams文档。