从Apache Kafka主题中删除消息

4
我刚开始接触Apache Kafka,正在尝试创建一个简单的应用程序以更好地理解其API。我知道这个问题在这里已经被问过很多次了,但是我该如何清除存储在主题上的消息/记录呢?
我看到的大部分答案都说要更改消息保留时间或删除并重新创建主题。但对我来说,这两种方法都不可行,因为我无法访问server.properties文件。我没有在本地运行Kafka,它托管在服务器上。也许有一种方法可以在Java代码中实现吗?
1个回答

8

我使用了AdminUtils而不是只删除已存在的主题并重新创建它。虽然这不是最好的解决方案,但我在使用您提到的AdminClient时遇到了问题,因为我只有deleteRecordsBefore()方法,而我不确定该怎么做。 - Dani
如果您正在使用deleteRecordsBefore(),则在AdminUtils中使用的是旧版Scala客户端,而在较新版本中建议使用Java中的新AdminClient API。您有一个deleteRecords方法,它为您提供了一种删除所有偏移量小于给定偏移量的消息的方法。 - ppatierno
你是对的。我显然使用了错误的 AdminClient,这就是为什么我一开始找不到该方法,因此不得不使用 AdminUtils。我从我的 IDE 拉入了错误的导入语句,而没有意识到它,即 kafka.admin.AdminClient 而不是 org.apache.kafka.clients.admin.AdminClient。不确定第一个是什么,但它正在拉取旧的方法,比如 deleteRecordsBefore()。感谢您的帮助! - Dani
有没有一种方法可以通过给定偏移量来删除一个消息?谢谢。 - Gabriel García Garrido

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接