apache-kafka - 如何为 Kafka 主题实现生存时间 (TTL)

我想在某个预定义的不活动时间后删除主题。

为了给您一些背景信息,有一个微服务有很多副本,每个副本都有自己的主题进行通信,由其副本 ID 标识(例如 topic_microservice-name_)。 如果出于任何原因,一个副本崩溃了,K8s 将启动另一个 Pod,具有完全不同的副本 Id,因此将不再使用之前的主题。因此,一段时间后可能会有很多无用的主题。

kafka 是否内置了整个主题的生存时间?

我的另一个想法是有一个 Quartz以某种方式迭代所有主题以获取最后修改/写入日期并检查 TTL 是否过期的工作。

最佳答案

目前没有办法给主题一个 TTL,一旦 TTL 到期,Kafka 会自动删除该主题。

可以在主题级别配置保留(retention.ms - 该主题应保留多长时间的消息或retention.bytes - 要保留的消息量以字节为单位)。有了这个,您可以有一个单独的服务利用 AdminClient 来对您的主题执行计划的操作。逻辑可以简单地遍历主题,过滤掉活跃的主题,并删除每个长时间不活跃以使保留策略生效的主题。

https://stackoverflow.com/questions/69245388/

相关文章:

c - Valgrind : Invalid read of size 1

python - 将函数重新定义为自身的一部分——为什么非法?

c# - 如何将 ViewData 传递给类中的 Action 方法?

r - 如何按 r 中数据框中的行对数字数据进行排名?

amazon-web-services - Github 工作流 CI/CD 失败

java - 如何检查至少一个 boolean 值是否为真?

swift - 是否有可能在 Swift 的枚举中将多个案例分组并表示为另一个案例?

java - 减去天数而不影响时间

javascript - leetcode 如何做到这一点 : Read user's input

c++ - 为什么 C++ 数组的括号在变量上而不是在数据类型上?