我正在使用 Kafka,其主题有 4 个分区。Kafka 中消息的保留期 (TTL) 默认设置为 7 天。我正在运行一个非流式批处理作业来处理来自 Kafka 的数据,并在每次处理运行后手动存储 Kafka 偏移量。
以下是经过几天的处理后保存的偏移量的一个例子:
第 1 天(偏移量已保存):
{
"0": 100,
"1": 110,
"2": 90,
"3": 123
}
第 6 天(偏移量已保存):
{
"0": 20000,
"1": 21000,
"2": 11000,
"3": 17003
}
到第 7 天,Kafka 的保留策略将启动,所有超过 7 天的消息将被自动删除。
我的担忧:
当第 7 天之后新的数据被发送到 Kafka,并且旧消息被删除时,我想知道偏移量会发生什么。
- Kafka 是否会继续按顺序分配偏移量,这是否意味着下一条新消息的分区 0 的偏移量为 20001?
- 或者一旦旧消息被删除,Kafka 是否会将每个分区的偏移量重置回 0?
我存储的最后处理的偏移量大约是 20000,我想确保第二天从偏移量 20001 开始读取将允许我正确读取新生成的消息,而不会遇到任何问题(例如 Kafka 重用旧偏移量)。