The timestamp is always stored -- it's a metadata field that was added
to the message format in 0.10.0.

By default, Producer uses System.currentTimeMillis() to set the
timestamp before it send the record to the broker. Or you can explicitly
set the timestamp by yourself.

The default TimestampExtractor returns this metadata timestamp for each
record. This gives you event-time processing semantics. Thus, you
usually don't need to worry about this -- it's happens all out-of-box.

Furthermore in Streams, the timestamp will be set explicitly using
"stream time" (thus, Streams preserves event-time semantics). "stream
time" is an internally tracked timestamp, that aligns to the progress
during processing. I omit the details for now, but basically "stream
time" aligns with the record metadata timestamp of the currently
processed record.


-Matthias


On 5/4/17 12:02 PM, Murad Mamedov wrote:
> Hi,
> 
> In Producer record, we have timestamp.
> - Where it is actually stored, if stored?
> - When producing resorts with KStream.to() which timestamp is used, if used?
> 
> In order to guarantee proper timestamp, do we have to always implement
> timestamp extractor?
> 
> Thanks in advance.
> 

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to