Kafka 中的消息保存时间可以通过配置来控制,默认情况下,Kafka 会保存所有的消息,直到它们被消费或达到配置的保留期限。
Kafka 提供了多种配置来控制消息的保存时间,以下是一些常见的配置:
- retention.ms:这是 Kafka 的默认保留期限,表示消息将被保存多久,默认值是 7 天(604800000 ms)。
- retention.bytes:这是 Kafka 的另一个保留期限,表示消息将被保存的总字节数,默认值是 -1,表示无限大。
- log.retention.hours:这是 Kafka 的日志保留期限,表示日志将被保存多久,默认值是 168 小时(7 天)。
- log.retention.bytes:这是 Kafka 的日志保留字节数,表示日志将被保存的总字节数,默认值是 -1,表示无限大。
这些配置可以在 Kafka 的配置文件中设置,例如在 server.properties
文件中添加以下配置:
retention.ms=86400000 # 保存 1 天
retention.bytes=1073741824 # 保存 1GB
log.retention.hours=24 # 保存 24 小时
log.retention.bytes=536870912 # 保存 512MB
在 Kafka 中,还可以使用 Topic 级别的配置来控制消息的保存时间,例如:
kafka-topics --create --bootstrap-server <kafka-broker>:9092 --replication-factor 1 --partitions 1 --topic my-topic --config retention.ms=86400000
这将创建一个名为 my-topic
的 Topic,并将其保留期限设置为 1 天。
需要注意的是,Kafka 的消息保存时间是基于磁盘空间的,如果磁盘空间不足,Kafka 将删除旧的消息来释放空间。因此,在配置消息保存时间时,需要考虑磁盘空间的限制。