A custom processor which buffers events in a simple java.util.List
in process()
- this buffer is not a state store.
Every 30 seconds WALL_CLOCK_
I sort of figured few arguments against tuning commit and punctuate interval and calling this setup foolproof.
From docs, on WALL_CLOCK_TIME
This is best effort only as its granularity is limited by how long an iteration of the processing loop takes to complete
It's possible to "miss" a punctuation if: with PunctuationType#WALL_CLOCK_TIME, on GC pause, too short interval
punctuate : |-------20s-------|-------20s-------|------20s-------|------20s------|
c o m m it : |------------30s------------|------------30s-----------|------------30s---
Say process()
took too much time (say 18 seconds) so punctuate()
was not invoked for the second run at 40th second - because as doc mentioned, too short interval.
Now at 31st second, if the application crashes, even with eos enabled, events in buffer would have been committed at source. At restart, the buffer would be lost.
punctuate : |-------20s-------|------process()---------20s-------|------20s------|
c o m m it : |------------30s------------|------------30s-------------|------------30s---
Hence it is not valid argument that tuning commit and punctuate interval would curb the need for state store.