One emitter, six windows

An event leaves its source, travels to the board, and drops into the window for its event time. As newer events arrive, the watermark advances and closes older windows.

Rate and simulation speed change live. Other settings start a fresh run.
Ready to emit · 0.0s /28s
Producer time0.0s
Watermark-3.0s
Travelling0
Accepted0
Late0
0 accepted, 0 late, 0 travelling. The table below counts events when they reach the board.
Current events Delayed eventClick the emitter to turn it off.

Pause to inspect a travelling event. The clock and every journey stop together.Once the 0–5s window closes, send an older event and watch it take the late route.

WindowStateAcceptedLate
0–5sOpen00
5–10sOpen00
10–15sOpen00
15–20sOpen00
20–25sOpen00
25–30sOpen00

0 emitted = 0 travelling + 0 accepted +0 late

What to try

Start the emitter, pause mid-flight, then resume. Turn the source off: existing events finish their journeys. Send an older event after a lid closes, then try a longer watermark delay in a new run. Change emission rate mid-flight, or try jittered event times and seeded bursts from the same source.

How it works

The watermark is the newest event time to reach the board minus your chosen delay. A window closes when the watermark reaches its end. Counts come from the admission ledger, not from the pile's height. The shared useEmitters hook schedules arrivals on the physics clock. Jitter uses the watermarks preset, with event times before this study clamped to zero.

A small, bounded study inspired byFlink Watermarks…WTF?. The emitter runs for24 simulated seconds, then lets its last events finish. The continuous version below adds a following board and window retirement. See thearrival API or thefull watermarks explainer.

Keep the stream running

This version runs without a time limit. Travel, admission, the camera and sources share the simulation clock.

Clock 0.0sAccepted 0Late 0Retained bodies 0 / 160Historical windows 0Execution sync
Skip to data table
0 accepted and 0 late events across 0 historical windows; 0 bodies retained.

The board follows simulation time and keeps 15 seconds of history visible. Retired windows remain in the accessible table. Save a snapshot, run ahead, and restore it to replay the same events and random sequence.