Using Timestamps on Streams and Topics
Provides a code example for using timestamps on HPE Ezmeral Data Fabric Streams streams and topics.
Passing Timestamp Value
The timestamp value can be passed as part of the ProducerRecord, for
example:
ProducerRecord<String, String> producerRecord =
new ProducerRecord<String, String>(topicName, partition, timestamp, key, value);
NOTE
The timestamp value is retained if the timestamp type is createtime.
If the timestamp type is logappendtime, then the timestamp value is ignored
and instead the server timestamp is used.Retrieving Timestamp Type
This example sets and retrieves the timestamp type. The following code example performs the following:
- Creates a stream with a default timestamp type of LogAppendTime.
- Creates a topic with a specific timestamp type of CreateTime.
- Retrieves the topics's timestamp type.
// Create stream with default timestamp type as "LogAppendTime"
// Create a topic with timestamp type as "CreateTime"
Configuration conf = new Configuration();
Admin streamAdmin = Streams.newAdmin(conf);
// Create a stream
StreamDescriptor sDesc = Streams.newStreamDescriptor();
sDesc.setDefaultTimestampType(TimestampType.LOG_APPEND_TIME);
streamAdmin.createStream(streamName, sDesc);
// Create a topic
TopicDescriptor tDesc = Streams.newTopicDescriptor();
tDesc.setTimestampType(TimestampType.CREATE_TIME);
streamAdmin.createTopic(streamName, topicName, tDesc);
// Get topic timestamp type
TopicDescriptor rDesc = streamAdmin.getTopicDescriptor(streamName, topicName);
System.out.println(rDesc.getTimestampType().name);