我想在某个预定义的不活动时间后删除主题。
为了给您一些背景信息,有一个微服务有很多副本,每个副本都有自己的主题进行通信,由其副本 ID 标识(例如 topic_microservice-name_
kafka 是否内置了整个主题的生存时间?
我的另一个想法是有一个 Quartz以某种方式迭代所有主题以获取最后修改/写入日期并检查 TTL 是否过期的工作。
最佳答案
目前没有办法给主题一个 TTL,一旦 TTL 到期,Kafka 会自动删除该主题。
可以在主题级别配置保留(retention.ms
- 该主题应保留多长时间的消息或retention.bytes
- 要保留的消息量以字节为单位)。有了这个,您可以有一个单独的服务利用 AdminClient
来对您的主题执行计划的操作。逻辑可以简单地遍历主题,过滤掉活跃的主题,并删除每个长时间不活跃以使保留策略生效的主题。
https://stackoverflow.com/questions/69245388/