Я читаю данные из Google pub-sub и помещаю их в фиксированное окно продолжительностью 5 минут. Но - данные не запускаются правильно. Я пробовал несколько комбинаций, похоже, ничего не работает. Это выглядит довольно просто, но я не могу понять это правильно.
Пример использования -
- Чтение данных из pub-sub
- Окружите их за 5 минут
- Выполните агрегирование по истечении 5-минутного окна.
- Допускается срок опоздания 1 день.
Попытки:
1. Использование AfterWatermark.pastEndOfWindow для запуска. Это вообще не производит никакого вывода. По подписке было прочитано около 1000 сообщений, но окно не выводило ни одного сообщения.
Window.<EventModel>into(
FixedWindows.of(Duration.standardMinutes(5)))
.triggering(AfterWatermark.pastEndOfWindow())
.withAllowedLateness(Duration.standardDays(1), Window.ClosingBehavior.FIRE_ALWAYS)
.discardingFiredPanes();
2. Использование глобального окна: работает правильно. Но здесь используется GlobalWindows, но мне нужно реализовать фиксированное оконное управление.
Window<EventModel> window = Window.<OrderEvent>
into(new GlobalWindows())
.triggering(
Repeatedly.forever(
AfterProcessingTime.pastFirstElementInPane().plusDelayOf(Duration.standardMinutes(5))))
.discardingFiredPanes()
.withAllowedLateness(Duration.standardDays(1));
Я пробовал другие комбинации, которые используют - Ранний или поздний обжиг - которые запускают некоторые элементы, но не подходят для моего варианта использования - мне не нужны ранние или поздние обжигы - просто нужны результаты каждые 5 минут.
Любой ввод был бы действительно полезен, я безуспешно потратил на это слишком много времени.