Консолидация событий, когда нет определенного временного окна для прибытия событий - PullRequest
0 голосов
/ 22 октября 2019

У нас есть одна тема, которая называется igrationstatus , предположим, что мы разбиваем ее так, чтобы все экземпляры и события для данного MigrationCandidateNumber всегда заканчивались одной и той же темой и разделом.

Следующее событие прибывает в 12-10-2019 в 10:00

{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Final Bill Produced"
}

Следующее событие наступает 14-10-2019 в 08:00

{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Product Ready"
}

Следующее событиеприбытие 17-10-2019 в 12:00

{
"MigrationCandidateNumber": 54545451,
"MigrationStatus":"Registration Complete"
}

Постановка задачи:

После того, как все 3 из этих событий были обработаны, нам нужно создать событие ниже на * 1018Тема *igrationstatus-out , как показано ниже:

{
    "MigrationCandidateNumber": **54545451**,
    "MigrationStatus":"**Ready for extract 2**"
 }

Широкое временное окно является преднамеренным, поскольку первые 3 события могут наступить с разницей в несколько дней.

Лучший способ сделать это снет внешней базы данных?

Решение Попытка:

  1. Вы не можете использовать агрегированное оконное агрегирование, потому что мы не уверены, когда наступит событие.
  2. создал 3 потока из основного потока для различного статуса миграции, но снова объединения потоковых окон являются оконными.
  3. Для этого сценария я не вижу способа агрегирования данных, чтобы мы хранили данные в таблице KSQL и выполняли группирование, чтобы проверить, поступили ли сообщения со всем статусом.

Я знаю, что это широко открытый вопрос, и в основном он связан с подходом к решению проблемы, а не с технической проблемой, но я не смог найти лучшего форума для публикации этого.

1 Ответ

0 голосов
/ 05 ноября 2019

Я решил эту проблему и поделился кодом в github. Пожалуйста, перейдите по ссылке для решения.

Ссылка на GitHub для решения

Спасибо MatthiasJ.Sax за заголовки.

...