Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Stream 没有定义事件到达时间窗口时的事件合并_Stream_Apache Kafka Streams_Ksqldb - Fatal编程技术网

Stream 没有定义事件到达时间窗口时的事件合并

Stream 没有定义事件到达时间窗口时的事件合并,stream,apache-kafka-streams,ksqldb,Stream,Apache Kafka Streams,Ksqldb,我们有一个名为migrationstatus的主题,假设我们进行分区,以便给定的MigrationCandidateNumber的所有实例和事件始终位于同一主题和分区上 以下事件于2019年10月12日上午10:00到达 { "MigrationCandidateNumber": 54545451, "MigrationStatus":"Final Bill Produced" } 以下事件于2019年10月14日上午8:00到达 { "MigrationCandidateNumber": 5

我们有一个名为migrationstatus的主题,假设我们进行分区,以便给定的MigrationCandidateNumber的所有实例和事件始终位于同一主题和分区上

以下事件于2019年10月12日上午10:00到达

{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Final Bill Produced"
}
以下事件于2019年10月14日上午8:00到达

{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Product Ready"
}
以下事件于2019年10月17日上午12:00到达

{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Registration Complete"
}
问题陈述:

处理完所有这3个事件后,我们需要在迁移Status out主题上生成以下事件,如下所示:

{
    "MigrationCandidateNumber": **54545451**,
    "MigrationStatus":"**Ready for extract 2**"
 }
宽大的时间窗是故意的,因为前3个事件可能会相隔几天到达

在没有外部数据库的情况下执行此操作的最佳方法

尝试的解决方案:

  • 您不能使用窗口聚合,因为我们不确定事件何时到达
  • 为不同的迁移状态从主流中创建了3个流,但流连接再次被窗口化
  • 对于这个场景,我看不到一种聚合数据的方法,这样我们就可以将数据存储在KSQL表中,并执行groupby来检查具有所有状态的消息是否已经到达
    我知道这是一个很大的开放性问题,主要是关于解决问题的方法,而不是技术问题,但我找不到更好的论坛来发布这篇文章

    我已经解决了这个问题,并在github中共享了代码。请按照链接获取解决方案


    感谢您的提醒。

    我建议您使用处理器API。将状态存储连接到
    处理器
    以存储数据。这给了您最大的灵活性。@MatthiasJ.Sax感谢您的回复。这看起来是个好办法。我还有一个问题。我发现apachecamel聚合也可以解决这个问题。请找到链接。有没有更好的解决方案。我不熟悉ApacheCamel。我不能给你任何建议。(免责声明:我在卡夫卡流上工作,所以我有个人偏好——可能有点偏见:)@MatthiasJ.Sax感谢您的回复。我正在研究它&我将在这里发布我的发现……有关更多详细信息,请参阅本文: