日志保留以实现消息ttl

ergxz8rk  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(362)

我们正在考虑通过利用基于时间的保留功能,将超时作为基于kafka的api的一部分来实现。
基本上,设置 log.retention.ms = 10000 使命令主题中的消息在10秒内未处理时过期。
我想知道,如果保留策略在日志段级别上运行(基于每个段的最大时间戳),这是否会提供消息级别的保证(即每个消息都有相同的可用时间)。
当然,我们可以减少 log.segment.bytes 为了实现更细粒度的保留控制,不确定对性能的影响。
有什么建议吗?
尼克

h7wcgrx3

h7wcgrx31#

在kafka中,保留设置是下限,即kafka保证在达到保留限制之前不会删除邮件。
实际上,这意味着消息在日志中的保留时间可以超过其保留限制。
正如你所说,Kafka是在日志段级别上运行的。对于时间保留,只有当段中的最新邮件超过限制时,此段才有资格删除。这不适用于活动段。因此,保留不能用于提供每封邮件的生存时间。
我不知道你的用例,但也许可以看看 offsetsForTimes() 以及 seek() 消费者的API。这些允许用户根据时间选择要阅读的内容。
最后,如果你真的需要强大的每消息ttl,也许Kafka不是最好的工具。

相关问题