【发布时间】:2019-03-28 10:35:38
【问题描述】:
我在 kafka 中进行数据复制。但是,kafka 日志文件的大小增加得非常快。一天的大小达到 5 GB。作为这个问题的解决方案,我想立即删除处理过的数据。我在 AdminClient 中使用删除记录方法来删除偏移量。但是当我查看日志文件时,该偏移量对应的数据并没有被删除。
RecordsToDelete recordsToDelete = RedcordsToDelete.beforeOffset(offset);
TopicPartition topicPartition = new TopicPartition(topicName,partition);
Map<TopicPartition,RecordsToDelete> deleteConf = new HashMap<>();
deleteConf.put(topicPartition,recordsToDelete);
adminClient.deleteRecords(deleteConf);
我不想要像 (log.retention.hours , log.retention.bytes , log.segment.bytes , log.cleanup.policy=delete)
这样的建议因为我只想删除消费者消费的数据。在这个解决方案中,我还删除了没有被消费的数据。
你有什么建议?
【问题讨论】:
-
@Gio 大多数答案都是在存在 AdminClient 来删除记录之前...
-
如果其他消费者想要这些数据怎么办?删除偏移量不应该由客户端决定,这是服务器端配置
-
每个消费者都有一个单独的主题。这就是为什么客户端没有问题的原因。我也可以删除偏移量。我的问题是,当我删除偏移量时,日志文件的大小并没有减少。因为我的日志文件没有缩小,磁盘很快就会被填满。
标签: java apache-kafka offset kafka-topic