Как работает триггер потока данных AfterProcessingTime.pastFirstElementInPane()?

В мире потоков данных.

Мое понимание, когда я говорю:

Window.into(FixedWindows.of(Duration.standardHours(1)))
  .triggering(AfterProcessingTime.pastFirstElementInPane()
      .plusDelayOf(Duration.standardMinutes(15))

заключается в том, что в течение фиксированного окна продолжительностью один час триггер ожидает или группирует элементы после того, как он увидел первый элемент.

Но когда я говорю:

Window.into(FixedWindows.of(Duration.standardHours(1)))
  .triggering(AfterProcessingTime.pastFirstElementInPane()

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

1 ответ

Решение

При обоих этих триггерах окно будет запущено один раз, а все оставшиеся элементы будут отброшены. Ты можешь использовать Repeatedly.forever(...) запускать несколько раз.

Что касается вашего конкретного вопроса, существует небольшое количество пакетирования, которое происходит, если элементы прибывают примерно в одно и то же время.

Предполагая, что вы имели в виду следующее, тогда да, второй будет срабатывать гораздо чаще и может перегрузить систему.

Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane()
    .plusDelayOf(Duration.standardMinutes(15)))

против

Repeatedly.forever(AfterProcessingTime.pastFirstElementInPane())
Другие вопросы по тегам