以下两种保留配置有什么区别?
offsets.retention.minutes
log.retention.minutes
我不知道它是如何相互关联或相互关联的。根据我的理解,一旦移除了偏移量,就无法访问日志中的记录,反之亦然。有什么我误解了吗?
答案 0 :(得分:10)
偏移量是指向消费者已消耗的最新消息的指针。因此,如果您阅读10条消息,则偏移量将移动10个位置。 offsets.retention.minutes
允许您将偏移量移回到开头,如果它在一段时间内没有更改。
为了使其可视化,我们假设我们将字母a
放在g
(按此顺序)在Kafka主题中,所有这些都在不同的时间。在我们开始使用消息之前,偏移量指向最早的消息:
OFFSET: *
MESSAGES: a b c d e f g
现在我们消耗3条消息(a
,b
,c
),以便偏移移动:
OFFSET: *
MESSAGES: a b c d e f g
现在我们假设我们设置了log.retention.minutes=10
,我们在11分钟前将a
和b
放入主题,但最近插入了其他消息。我们看到了:
OFFSET: *
MESSAGES: c d e f g
现在让我们设置offsets.retention.minutes=1
,并假装自上次消耗任何东西以来已经过了90秒。我们看到了:
OFFSET: *
MESSAGES: c d e f g
因为c
现在是该主题上最早的消息(以及将要消耗的第一个消息)。