Stream 没有定义事件到达时间窗口时的事件合并
我们有一个名为migrationstatus的主题,假设我们进行分区,以便给定的MigrationCandidateNumber的所有实例和事件始终位于同一主题和分区上 以下事件于2019年10月12日上午10:00到达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
{
"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个事件可能会相隔几天到达
在没有外部数据库的情况下执行此操作的最佳方法
尝试的解决方案:
我知道这是一个很大的开放性问题,主要是关于解决问题的方法,而不是技术问题,但我找不到更好的论坛来发布这篇文章 我已经解决了这个问题,并在github中共享了代码。请按照链接获取解决方案
感谢您的提醒。我建议您使用处理器API。将状态存储连接到
处理器
以存储数据。这给了您最大的灵活性。@MatthiasJ.Sax感谢您的回复。这看起来是个好办法。我还有一个问题。我发现apachecamel聚合也可以解决这个问题。请找到链接。有没有更好的解决方案。我不熟悉ApacheCamel。我不能给你任何建议。(免责声明:我在卡夫卡流上工作,所以我有个人偏好——可能有点偏见:)@MatthiasJ.Sax感谢您的回复。我正在研究它&我将在这里发布我的发现……有关更多详细信息,请参阅本文: