Apache kafka 日志保留以实现消息TTL

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

我们正在考虑通过利用基于时间的保留功能,将超时作为基于Kafka的API的一部分来实现

基本上,设置
log.retention.ms=10000
可以使命令主题中的消息在10秒内未处理时过期

考虑到保留策略在日志段级别(基于每个段的最大时间戳)运行,我想知道这是否会提供消息级别的保证(即每个消息都有相同的可用时间)

当然,我们可以减少
log.segment.bytes
以实现更细粒度的保留控制,但不确定对性能的影响

有什么建议吗


Nick

在Kafka中,保留设置是下限,即Kafka保证在达到保留限制之前不会删除邮件

实际上,这意味着消息在日志中的保留时间可以超过其保留限制

正如你所说,卡夫卡在日志段级别上运行。对于时间保留,只有当段中的最新邮件超过限制时,此段才有资格删除。这不适用于活动段。因此,保留不能用于提供每封邮件的生存时间

我不知道您的用例,但也许可以看看消费者中的应用程序和API。这些选项允许用户根据时间选择要阅读的内容

最后,如果你真的需要强大的每消息TTL,也许卡夫卡不是最好的工具