如果我有这样的窗口:
.apply(Window
.<String>into(Sessions
.withGapDuration(Duration.standardSeconds(10)))
.triggering(AfterWatermark
.pastEndOfWindow()
.withEarlyFirings(AfterPane.elementCountAtLeast(1))
.withLateFirings(AfterPane.elementCountAtLeast(1))));
它从Pub / Sub接收3个元素。
是否保证窗口会恰好触发4次?
是否保证会有:
我正在查看Timing
,并说:
ON_TIME窗格可能包含本地延迟元素。它甚至可能只包含本地后期元素。如果本地延迟元素进入ON_TIME窗格,则其迟到变得不可观察。
好的,ON_TIME窗格可以包含LATE元素,但是另一个窗格会被.withLateFirings(AfterPane.elementCountAtLeast(1))为ON_TIME窗格中的每个LATE元素触发,或者这些元素不会触发因为它们是ON_TIME窗格的一部分吗?
答案 0 :(得分:1)
元素在单个窗格中仅为“新”。假设没有空窗格,那么3个输入元素应该最多导致3个输出窗格。使用该触发器,可能会有一个空的ON_TIME窗格。您还可以通过指定ClosingBehavior
如果后期元素进入ON_TIME
窗格,则不会将它们作为未来窗格的一部分重新触发(尽管如果要累积已触发的窗格,它们将继续合并到结果中)。 / p>