Excluir um tópico do serviço gerenciado do Google Cloud para Apache Kafka

Para excluir um único tópico, use o console Google Cloud , a Google Cloud CLI, a biblioteca de cliente, a API Managed Kafka ou as APIs Apache Kafka de código aberto.

Papéis e permissões necessárias para excluir um tópico

Para receber as permissões necessárias para excluir um tópico, peça ao administrador para conceder a você o papel do IAM Editor de tópicos gerenciados do Kafka(roles/managedkafka.topicEditor) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para excluir um tópico. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para excluir um tópico:

  • Excluir um tema: managedkafka.topics.delete

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Para mais informações sobre essa função, consulte Funções predefinidas do Managed Service para Apache Kafka.

Excluir um tópico

A exclusão de um tópico é irreversível e resulta na perda permanente de todos os dados armazenados nele. Confira se você tem backups adequados ou exportou os dados necessários antes de continuar.

Pare ou reconfigure todos os consumidores inscritos no tópico para consumir de um tópico diferente antes de excluir o tópico.

Para excluir um tópico, siga estas etapas:

Console

  1. No Google Cloud console, acesse a página Clusters.

    Acessar Clusters

  2. Na lista de clusters, clique no cluster a que pertence o tópico que você quer excluir.

    A página Detalhes do cluster é aberta. Na página de detalhes do cluster, na guia Recursos, os tópicos são listados.

  3. Clique no tópico que você quer excluir.

    A página Detalhes do tópico é aberta.

  4. Clique em Excluir e confirme a operação.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Execute o comando gcloud managed-kafka topics delete:

    gcloud managed-kafka topics delete TOPIC_ID \
        --cluster=CLUSTER_ID \
        --location=LOCATION_ID
    

    Esse comando remove o tópico especificado do cluster designado do Google Cloud Managed Service para Apache Kafka. Todos os dados associados ao tema são excluídos, e ele não fica mais acessível a produtores ou consumidores.

    Substitua:

    • TOPIC_ID: o ID do tópico a ser excluído.
    • CLUSTER_ID: o ID do cluster em que o tópico está localizado.
    • LOCATION_ID: o local do cluster.
  3. REST

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto do Google Cloud
    • LOCATION: o local do cluster
    • CLUSTER_ID: o ID do cluster
    • TOPIC_ID: o ID do tópico

    Método HTTP e URL:

    DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID

    Para enviar a solicitação, expanda uma destas opções:

    Você receberá uma resposta JSON semelhante a esta:

    {}
    

    Go

    Antes de testar esta amostra, siga as instruções de configuração do Go em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do serviço gerenciado para Apache Kafka.

    Para autenticar o Managed Service para Apache Kafka, configure o Application Default Credentials(ADC). Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/managedkafka/apiv1/managedkafkapb"
    	"google.golang.org/api/option"
    
    	managedkafka "cloud.google.com/go/managedkafka/apiv1"
    )
    
    func deleteTopic(w io.Writer, projectID, region, clusterID, topicID string, opts ...option.ClientOption) error {
    	// projectID := "my-project-id"
    	// region := "us-central1"
    	// clusterID := "my-cluster"
    	// topicID := "my-topic"
    	ctx := context.Background()
    	client, err := managedkafka.NewClient(ctx, opts...)
    	if err != nil {
    		return fmt.Errorf("managedkafka.NewClient got err: %w", err)
    	}
    	defer client.Close()
    
    	clusterPath := fmt.Sprintf("projects/%s/locations/%s/clusters/%s", projectID, region, clusterID)
    	topicPath := fmt.Sprintf("%s/topics/%s", clusterPath, topicID)
    	req := &managedkafkapb.DeleteTopicRequest{
    		Name: topicPath,
    	}
    	if err := client.DeleteTopic(ctx, req); err != nil {
    		return fmt.Errorf("client.DeleteTopic got err: %w", err)
    	}
    	fmt.Fprint(w, "Deleted topic\n")
    	return nil
    }
    

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java do serviço gerenciado para Apache Kafka.

    Para autenticar o serviço gerenciado para Apache Kafka, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.

    import com.google.api.gax.rpc.ApiException;
    import com.google.cloud.managedkafka.v1.ManagedKafkaClient;
    import com.google.cloud.managedkafka.v1.TopicName;
    import java.io.IOException;
    
    public class DeleteTopic {
    
      public static void main(String[] args) throws Exception {
        // TODO(developer): Replace these variables before running the example.
        String projectId = "my-project-id";
        String region = "my-region"; // e.g. us-east1
        String clusterId = "my-cluster";
        String topicId = "my-topic";
        deleteTopic(projectId, region, clusterId, topicId);
      }
    
      public static void deleteTopic(String projectId, String region, String clusterId, String topicId)
          throws Exception {
        try (ManagedKafkaClient managedKafkaClient = ManagedKafkaClient.create()) {
          // This operation is being handled synchronously.
          managedKafkaClient.deleteTopic(TopicName.of(projectId, region, clusterId, topicId));
          System.out.println("Deleted topic");
        } catch (IOException | ApiException e) {
          System.err.printf("managedKafkaClient.deleteTopic got err: %s", e.getMessage());
        }
      }
    }
    

    Python

    Antes de testar esta amostra, siga as instruções de configuração do Python em Instalar as bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do serviço gerenciado para Apache Kafka.

    Para autenticar o serviço gerenciado para Apache Kafka, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.

    from google.api_core.exceptions import NotFound
    from google.cloud import managedkafka_v1
    
    # TODO(developer)
    # project_id = "my-project-id"
    # region = "us-central1"
    # cluster_id = "my-cluster"
    # topic_id = "my-topic"
    
    client = managedkafka_v1.ManagedKafkaClient()
    
    topic_path = client.topic_path(project_id, region, cluster_id, topic_id)
    request = managedkafka_v1.DeleteTopicRequest(name=topic_path)
    
    try:
        client.delete_topic(request=request)
        print("Deleted topic")
    except NotFound as e:
        print(f"Failed to delete topic {topic_id} with error: {e.message}")
    

A seguir