繁体   English   中英

Golang删除Kafka主题中的所有记录

[英]Golang delete all records from a topic in Kafka

嗨,我正在用 Go 和 Kafka 编写一个服务,我需要实现一个删除所有端点,该端点将从特定主题中删除所有记录。 但是我找不到合适的方法来做到这一点。 我正在为 Kafka 使用Sarama 库

到目前为止,我能找到的实现全部删除的唯一两种方法是删除主题,这似乎不是处理此问题的有效方法,第二种方法是使用 Sarama 库中的DeleteRecords函数,但是此函数删除记录其偏移量小于相应分区的给定偏移量。 这意味着我必须首先获得最新的偏移量。

基本上我正在寻找最好的方法来做这样的事情。 有人可以帮助我吗? 最佳做法是什么? 也许我错过了一些东西。 我真的很感激一些例子。 谢谢!

如果您想修剪所有消息,另一种方法是将主题的保留减少到一个较小的值(例如 100 毫秒)。 等待代理从主题中删除所有记录,然后将主题保留设置为其原始值。 这是如何做到的。

首先,将保留时间设置为 100 毫秒。

kafka-configs --zookeeper localhost:2181 \
--entity-type topics \
--entity-name my-topic \
--alter --add-config retention.ms=100

替代解决方案:

删除一个主题并重新创建它不像前两种方法那么优雅,但在某些情况下它可能是一个更简单的解决方案(例如,如果主题创建是脚本化的)。

kafka-topics --bootstrap-server localhost:9092 \
--topic my-topic \
--delete

然后再次创建它:

kafka-topics --bootstrap-server localhost:9092 \
--topic my-topic \
--create \
--partitions <number_of_partitions> \
--replication-factor <replication_factor>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM