0

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

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

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

4

1 回答 1

1

如果要修剪所有消息,另一种方法是将主题的保留减少到一个较小的值(例如 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>
于 2021-07-20T09:19:55.117 回答