@InterfaceStability.Unstable
public class StreamsResetter
extends java.lang.Object
StreamsResetter
resets the processing state of a Kafka Streams application so that, for example, you can reprocess its input from scratch.
This class is not part of public API. For backward compatibility, use the provided script in "bin/" instead of calling this class directly from your code.
Resetting the processing state of an application includes the following actions:
Do only use this tool if no application instance is running. Otherwise, the application will get into an invalid state and crash or produce wrong results.
If you run multiple application instances, running this tool once is sufficient.
However, you need to call KafkaStreams#cleanUp()
before re-starting any instance (to clean local state store directory).
Otherwise, your application is in an invalid state.
User output topics will not be deleted or modified by this tool. If downstream applications consume intermediate or output topics, it is the user's responsibility to adjust those applications manually if required.
Constructor and Description |
---|
StreamsResetter() |
Modifier and Type | Method and Description |
---|---|
void |
doDelete(java.util.List<java.lang.String> topicsToDelete,
org.apache.kafka.clients.admin.AdminClient adminClient) |
java.lang.Long |
getDateTime(java.lang.String timestamp) |
static void |
main(java.lang.String[] args) |
void |
maybeSeekToEnd(java.lang.String groupId,
org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client,
java.util.Set<org.apache.kafka.common.TopicPartition> intermediateTopicPartitions) |
void |
resetOffsetsFromResetPlan(org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client,
java.util.Set<org.apache.kafka.common.TopicPartition> inputTopicPartitions,
java.util.Map<org.apache.kafka.common.TopicPartition,java.lang.Long> topicPartitionsAndOffset) |
void |
resetOffsetsTo(org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client,
java.util.Set<org.apache.kafka.common.TopicPartition> inputTopicPartitions,
java.lang.Long offset) |
int |
run(java.lang.String[] args) |
int |
run(java.lang.String[] args,
java.util.Properties config) |
void |
shiftOffsetsBy(org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client,
java.util.Set<org.apache.kafka.common.TopicPartition> inputTopicPartitions,
java.lang.Long shiftBy) |
public int run(java.lang.String[] args)
public int run(java.lang.String[] args, java.util.Properties config)
public void maybeSeekToEnd(java.lang.String groupId, org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client, java.util.Set<org.apache.kafka.common.TopicPartition> intermediateTopicPartitions)
public void resetOffsetsFromResetPlan(org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client, java.util.Set<org.apache.kafka.common.TopicPartition> inputTopicPartitions, java.util.Map<org.apache.kafka.common.TopicPartition,java.lang.Long> topicPartitionsAndOffset)
public void shiftOffsetsBy(org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client, java.util.Set<org.apache.kafka.common.TopicPartition> inputTopicPartitions, java.lang.Long shiftBy)
public void resetOffsetsTo(org.apache.kafka.clients.consumer.Consumer<byte[],byte[]> client, java.util.Set<org.apache.kafka.common.TopicPartition> inputTopicPartitions, java.lang.Long offset)
public java.lang.Long getDateTime(java.lang.String timestamp) throws java.text.ParseException
java.text.ParseException
public void doDelete(java.util.List<java.lang.String> topicsToDelete, org.apache.kafka.clients.admin.AdminClient adminClient)
public static void main(java.lang.String[] args)