Guarantees
The windowing functionality in Storm core provides at-least-once guarantee. Values
emitted from a bolt’s execute(TupleWindow inputWindow)
method are
automatically anchored to all tuples in the inputWindow
. Downstream
bolts are expected to ack the received tuple (the tuple emitted from the windowed
bolt) to complete the tuple tree. If not acked, the tuples will be replayed and the
windowing computation will be reevaluated.
Tuples in a window are automatically acknowledged when they fall out of the window
after windowLength + slidingInterval
. Note that the configuration
topology.message.timeout.secs
should be more than
windowLength + slidingInterval
for time-based windows; otherwise
the tuples will time out and be replayed. This can result in duplicate evaluations.
For count-based windows, adjust the configuration so that windowLength +
slidingInterval
tuples can be received within the timeout period.