返回到文章

采纳

编辑于 3年前

使用AdminClient的deleteTopics删除主题却失败

kafka

使用AdminClient的api调用AdminClient的实例对象的deleteTopics方法删除一个主题,却失败了。有去看官网的API,api也没什么解释。我上网搜了下别人怎么用的,跟我的一样,也是一句调用就OK了,但我这失败了,也不知道为什么。

删除代码如下:

 public static void main(String[] args) {
//        createTopic("localhost:9092","testTopic2");
        deleteAndShowTopics("bar");
}

//主题删除
public static void deleteAndShowTopics(String topicName){
    Properties pros = configPros("localhost:9092");
    try(AdminClient client = AdminClient.create(pros)){
        client.deleteTopics(Arrays.asList(topicName));  //删除主题

        //下面是遍历所有的主题
        ListTopicsResult listResult = client.listTopics();
        try {
            listResult.listings().get().forEach(topic -> {
                System.out.println(topic);
            });
        } catch (InterruptedException | ExecutionException e) {
            throw new IllegalStateException(e);
        }
    }
}
//pros对象
public static Properties configPros(String bootStrapServers){
    Properties properties = new Properties();
    properties.put("bootstrap.servers", bootStrapServers);
    properties.put("connections.max.idle.ms", 10000);   //AdminClient最长的闲置时间,超出这个时间就会自动关闭这个客户端和broker之间的连接
    properties.put("request.timeout.ms", 5000); //等待响应的最长时间
    return properties;
}

日志打印在下面

15:49:09.959 [kafka-admin-client-thread | adminclient-1] DEBUG org.apache.kafka.clients.admin.KafkaAdminClient - [AdminClient clientId=adminclient-1] Sending DeleteTopicsRequestData(topics=[], topicNames=[bar], timeoutMs=5000) to windows10.microdone.cn:9092 (id: 0 rack: null). correlationId=5
15:49:09.960 [kafka-admin-client-thread | adminclient-1] DEBUG org.apache.kafka.clients.NetworkClient - [AdminClient clientId=adminclient-1] Sending DELETE_TOPICS request with header RequestHeader(apiKey=DELETE_TOPICS, apiVersion=1, clientId=adminclient-1, correlationId=5) and timeout 5000 to node 0: DeleteTopicsRequestData(topics=[], topicNames=[bar], timeoutMs=5000) 这里是请求超时的意思吗?
15:49:15.092 [kafka-admin-client-thread | adminclient-1] DEBUG org.apache.kafka.clients.NetworkClient - [AdminClient clientId=adminclient-1] Received DELETE_TOPICS response from node 0 for request with header RequestHeader(apiKey=DELETE_TOPICS, apiVersion=1, clientId=adminclient-1, correlationId=5): DeleteTopicsResponseData(throttleTimeMs=0, responses=[DeletableTopicResult(name='bar', topicId=AAAAAAAAAAAAAAAAAAAAAA, errorCode=7, errorMessage=null)])