Я думаю, что скользящее окно - правильный подход из того, что вы описали, и я не думаю, что вы можете решить это с помощью триггера + задержки.Если скользящее оконное окно событий имеет смысл с точки зрения вашей бизнес-логики, попробуйте сначала использовать его, вот для чего оно.
Насколько я понимаю, хотя вы можете использовать триггер для получения ранних результатов, он не гарантируетзапускать в определенное (серверное / обрабатывающее) время или с точным количеством элементов (полученных до сих пор для окна).Условие триггера позволяет / разблокирует бегуна для выдачи содержимого окна, но не заставляет его делать это.
В случае времени события это имеет смысл, так как не имеет значения, когда событие приходит иликогда срабатывает триггер, потому что если элемент имеет временную метку в окне, он будет назначен правильному окну независимо от того, когда он прибудет.И когда триггер сработает для окна, элемент будет гарантированно находиться в этом окне, если он прибыл.
Со временем обработки вы не сможете этого сделать.Если событие прибывает поздно, оно будет учтено в это время и будет выпущено в следующий раз при срабатывании триггера.А поскольку триггер не гарантирует точный момент его срабатывания, вы потенциально можете получить неожиданные данные, принадлежащие неожиданным испущенным панелям.В целом, полезно получить ранние результаты, но я не уверен, что вы можете рассуждать об этом на основе окна.
Кроме того, задержка запуска только добавляет задержку срабатывания (например, если она должна была срабатывать в 12 часов вечера)., не сработает в 12.05), но не позволяет надежно распределить несколько срабатываний триггера, чтобы он срабатывал через определенные интервалы.
Вы можете посмотреть документацию по проектированию для триггеров здесь: https://s.apache.org/beam-triggers, и, возможно, запоздалый документ также может иметь значение: https://s.apache.org/beam-lateness
Другие документы можно найти здесь, если вы заинтересованы: https://beam.apache.org/contribute/design-documents/.
Обновление:
Руи указал, что этот вариант использования может быть более сложным и, вероятно, не легко решаемым с помощью скользящих окон.Может быть, стоит заглянуть в окна сеанса или ручную логику поверх клавиш + состояние + таймеры