[英]How to delete kafka consumer group (created via new consumer api)?
我通過新的消費者 API 創建了 kafka 消費者
我正在使用 kafka 2.10-0.9.0.1
我們有 1 個消費者組,每個組中有 1 個消費者實例
Kafka 腳本 'kafka-consumer-groups.sh' 提供了刪除用戶的方法,但這僅適用於舊的消費者組運行命令:
給
--delete :警告:組刪除僅適用於舊的基於 ZK 的消費者組,並且必須謹慎使用它才能僅刪除不活動的組。
所以我想問一下有沒有辦法刪除通過新消費者API創建的消費者組?
不需要用新的消費者刪除。 以下是嘗試刪除時腳本輸出的內容:
請注意,無需刪除新使用者的組元數據,因為它會在最后一個成員離開時自動刪除
這就是簡短的回答。 更多細節:“元數據”意味着兩件事。 首先,只是作為組成員協調器的一部分存儲的有關消費者和消費者組的信息。 如果組中的所有消費者都消失了,它會自動刪除。
其次,消費者組已將提交的偏移量存儲在 Kafka 主題中(使用新消費者時。以前這些使用 Zookeeper 存儲)。 當消費者組消失時,該主題不會立即刪除。 如果消費者組再次出現,它會自動在該主題中找到之前的偏移量。 它可以選擇使用它們或忽略它們。 如果消費者組不再出現,這些存儲的偏移量最終會被自動垃圾收集。
所以簡而言之,在使用新的消費者時,不需要刪除任何東西。
在 Kafka 2.5.0 中, AdminClient
有一個名為deleteConsumerGroups
的 Java API,可用於刪除單個 ConsumerGroup。
您可以使用它,如下所示:
import java.util.Arrays;
import java.util.Properties;
import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.admin.*;
import org.apache.kafka.common.KafkaFuture;
public class DeleteConsumerGroups {
public static void main(String[] args) {
System.out.println("*** Starting AdminClient to delete a Consumer Group ***");
final Properties properties = new Properties();
properties.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, "1000");
properties.put(AdminClientConfig.DEFAULT_API_TIMEOUT_MS_CONFIG, "5000");
AdminClient adminClient = AdminClient.create(properties);
String consumerGroupToBeDeleted = "console-consumer-65092";
DeleteConsumerGroupsResult deleteConsumerGroupsResult = adminClient.deleteConsumerGroups(Arrays.asList(consumerGroupToBeDeleted));
KafkaFuture<Void> resultFuture = deleteConsumerGroupsResult.all();
try {
resultFuture.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
adminClient.close();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.