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.

