没有为事件到达定义时间 window 时的事件合并
Event Consolidation when there is no defined time window for Event Arrival
我们有一个名为 migrationstatus 的主题,假设我们进行分区以便给定 MigrationCandidateNumber 的所有实例和事件总是结束于相同的主题和分区。
以下活动将于 2019 年 12 月 10 日 10:00 上午
{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Final Bill Produced"
}
以下活动将于 2019 年 10 月 14 日 08:00 上午
{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Product Ready"
}
以下活动将于 2019 年 10 月 17 日 12:00 上午
到达
{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Registration Complete"
}
问题陈述:
处理完所有 3 个事件后,我们需要在 migrationstatus-out 主题上生成以下事件,如下所示:
{
"MigrationCandidateNumber": **54545451**,
"MigrationStatus":"**Ready for extract 2**"
}
宽时间 window 是故意的,因为前 3 个事件可能会相隔几天到达。
在没有外部数据库的情况下执行此操作的最佳方法?
尝试的解决方案:
- 您不能使用 windowed 聚合,因为我们不确定事件何时到达。
- 为不同的迁移状态从主流中创建了 3 个流,但流-流连接再次被 windowed。
- 对于这种情况,我看不到聚合数据的方法,因此我们无法将数据存储在 KSQL table 中并执行分组以检查所有状态的消息是否已到达。
我知道这是一个广泛开放的问题,主要与解决问题的方法有关,而不是技术问题,但我找不到更好的论坛来 post 这个问题。
我已经解决了这个问题,并在github中分享了代码。请按照link解决。
感谢MatthiasJ.Sax提醒。
我们有一个名为 migrationstatus 的主题,假设我们进行分区以便给定 MigrationCandidateNumber 的所有实例和事件总是结束于相同的主题和分区。
以下活动将于 2019 年 12 月 10 日 10:00 上午
{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Final Bill Produced"
}
以下活动将于 2019 年 10 月 14 日 08:00 上午
{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Product Ready"
}
以下活动将于 2019 年 10 月 17 日 12:00 上午
到达{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Registration Complete"
}
问题陈述:
处理完所有 3 个事件后,我们需要在 migrationstatus-out 主题上生成以下事件,如下所示:
{
"MigrationCandidateNumber": **54545451**,
"MigrationStatus":"**Ready for extract 2**"
}
宽时间 window 是故意的,因为前 3 个事件可能会相隔几天到达。
在没有外部数据库的情况下执行此操作的最佳方法?
尝试的解决方案:
- 您不能使用 windowed 聚合,因为我们不确定事件何时到达。
- 为不同的迁移状态从主流中创建了 3 个流,但流-流连接再次被 windowed。
- 对于这种情况,我看不到聚合数据的方法,因此我们无法将数据存储在 KSQL table 中并执行分组以检查所有状态的消息是否已到达。
我知道这是一个广泛开放的问题,主要与解决问题的方法有关,而不是技术问题,但我找不到更好的论坛来 post 这个问题。
我已经解决了这个问题,并在github中分享了代码。请按照link解决。
感谢MatthiasJ.Sax提醒。