Elliot, in the current API, `punctuate()` is called based on the current stream-time (which defaults to event-time), not based on the current wall-clock time / processing-time. See http://docs.confluent.io/ current/streams/faq.html#why-is-punctuate-not-called. The stream-time is advanced only when new input records are coming in, so if there's e.g. a stall on incoming records, then `punctuate()` will not be called.
If you need to schedule a call every N minutes of wall-clock time you'd need to use your own scheduler. Does that help? Michael On Tue, Mar 28, 2017 at 10:58 AM, Elliot Crosby-McCullough < elliot.crosby-mccullo...@freeagent.com> wrote: > Hi there, > > I've written a simple processor which expects to have #process called on it > for each message and configures regular punctuate calls via > `context.schedule`. > > Regardless of what configuration I try for timestamp extraction I cannot > get #punctuate to be called, despite #process being called for every > message (which are being sent several seconds apart). I've set the > schedule as low as 1 (though the docs aren't clear whether that's micro, > milli, or just seconds) and tried both the wallclock time extractor and the > default time extractor in both the global config and the state store serde. > > These particular messages are being generated by another kafka streams DSL > application and I'm using kafka 0.10.2.0, so presumably they also have > automatically embedded timestamps. > > I can't for the life of me figure out what's going on. Could you clue me > in? > > Thanks, > Elliot >