@FunctionalInterface
public interface TimestampPolicyFactory<KeyT,ValueT>
extends java.io.Serializable
TimestampPolicy for each partition at runtime by
 KafkaIO reader. Subclasses implement createTimestampPolicy(org.apache.kafka.common.TopicPartition, java.util.Optional<org.joda.time.Instant>), which is invoked by the
 reader while starting or resuming from a checkpoint. Two commonly used policies are provided. See
 withLogAppendTime() and withProcessingTime().| Modifier and Type | Interface and Description | 
|---|---|
| static class  | TimestampPolicyFactory.LogAppendTimePolicy<K,V>Assigns Kafka's log append time (server side ingestion time) to each record. | 
| static class  | TimestampPolicyFactory.ProcessingTimePolicy<K,V>A simple policy that uses current time for event time and watermark. | 
| static class  | TimestampPolicyFactory.TimestampFnPolicy<K,V>Internal policy to support deprecated withTimestampFn API. | 
| Modifier and Type | Method and Description | 
|---|---|
| TimestampPolicy<KeyT,ValueT> | createTimestampPolicy(TopicPartition tp,
                     java.util.Optional<Instant> previousWatermark)Creates a TimestampPolicy for a partition. | 
| static <K,V> TimestampPolicyFactory<K,V> | withCreateTime(Duration maxDelay)CustomTimestampPolicyWithLimitedDelayusingKafkaTimestampType.CREATE_TIMEfrom
 the record for timestamp. | 
| static <K,V> TimestampPolicyFactory<K,V> | withLogAppendTime()A  TimestampPolicythat assigns Kafka's log append time (server side ingestion time) to
 each record. | 
| static <K,V> TimestampPolicyFactory<K,V> | withProcessingTime()A  TimestampPolicythat assigns processing time to each record. | 
| static <K,V> TimestampPolicyFactory<K,V> | withTimestampFn(SerializableFunction<KafkaRecord<K,V>,Instant> timestampFn)Deprecated. 
 | 
TimestampPolicy<KeyT,ValueT> createTimestampPolicy(TopicPartition tp, java.util.Optional<Instant> previousWatermark)
tp - The returned policy applies to records from this TopicPartition.previousWatermark - The latest check-pointed watermark. This is set when the reader is
     resuming from a checkpoint. This is a good value to return by implementations of TimestampPolicy.getWatermark(PartitionContext) until a better watermark can be established
     as more records are read.static <K,V> TimestampPolicyFactory<K,V> withProcessingTime()
TimestampPolicy that assigns processing time to each record. Specifically, this is
 the timestamp when the record becomes 'current' in the reader. The watermark aways advances to
 current time.static <K,V> TimestampPolicyFactory<K,V> withLogAppendTime()
TimestampPolicy that assigns Kafka's log append time (server side ingestion time) to
 each record. The watermark for each Kafka partition is the timestamp of the last record read.
 If a partition is idle, the watermark advances roughly to 'current time - 2 seconds'. See
 KafkaIO.Read.withLogAppendTime() for longer description.static <K,V> TimestampPolicyFactory<K,V> withCreateTime(Duration maxDelay)
CustomTimestampPolicyWithLimitedDelay using KafkaTimestampType.CREATE_TIME from
 the record for timestamp. See KafkaIO.Read.withCreateTime(Duration) for more complete
 documentation.@Deprecated static <K,V> TimestampPolicyFactory<K,V> withTimestampFn(SerializableFunction<KafkaRecord<K,V>,Instant> timestampFn)
CustomTimestampPolicyWithLimitedDelay.KafkaIO.Read.withTimestampFn(SerializableFunction).