Depois que um tópico é criado, é possível editar a configuração dele para atualizar estas propriedades: o número de partições e as configurações de tópico que não são padrão para as propriedades já definidas no nível do cluster. Só é possível aumentar o número de partições, não diminuir.
Para atualizar um único tópico, use o Google Cloud console, 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ários para editar um tópico
Para receber as permissões necessárias para editar um tópico, peça ao administrador para conceder a você o papel do IAM de Editor de tópicos do Managed Kafka(roles/managedkafka.topicEditor) no seu 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 editar um tópico. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para editar um tópico:
-
Atualizar um tópico:
managedkafka.topics.update
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Para mais informações sobre esse papel, consulte Papéis predefinidos do Serviço Gerenciado para Apache Kafka.
Editar um tópico
Para editar um tópico, siga estas etapas:
Console
No Google Cloud console, acesse a página Clusters.
Os clusters criados em um projeto são listados.
Clique no cluster a que o tópico que você quer editar pertence.
A página Detalhes do cluster é aberta. Na página de detalhes do cluster, na guia Recursos, os tópicos são listados.
Clique no tópico que você quer editar.
A página Detalhes do tópico é aberta.
Para fazer edições, clique em Editar.
Clique em Salvar após as mudanças.
gcloud
-
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Execute o
gcloud managed-kafka topics updatecomando:gcloud managed-kafka topics update TOPIC_ID \ --cluster=CLUSTER_ID \ --location=LOCATION_ID \ --partitions=PARTITIONS \ --configs=CONFIGSEsse comando modifica a configuração de um tópico atual no cluster especificado do Serviço Gerenciado para Apache Kafka. Use esse comando para aumentar o número de partições e atualizar as configurações de configuração no nível do tópico.
Substitua:
- TOPIC_ID: o ID do tópico.
- CLUSTER_ID: o ID do cluster que contém o tópico.
- LOCATION_ID: o local do cluster.
- PARTITIONS: opcional: o número atualizado de partições do tópico. Só é possível aumentar o número de partições, não diminuir.
- CONFIGS: opcional: uma lista de configurações
a serem atualizadas. Especifique como uma lista separada por vírgulas de pares de chave-valor. Por exemplo,
retention.ms=3600000,retention.bytes=10000000.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
PROJECT_ID: seu Google Cloud ID do projeto -
LOCATION: o local do cluster -
CLUSTER_ID: o ID do cluster -
TOPIC_ID: o ID do tópico -
UPDATE_MASK: quais campos atualizar, como uma lista separada por vírgulas de nomes totalmente qualificados. Exemplo:partitionCount -
PARTITION_COUNT: o número atualizado de partições do tópico
Método HTTP e URL:
PATCH https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID?updateMask=UPDATE_MASK
Corpo JSON da solicitação:
{
"name": "TOPIC_ID",
"partitionCount": PARTITION_COUNT
}
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.managedkafka.v1.OperationMetadata",
"createTime": "CREATE_TIME",
"target": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID",
"verb": "update",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
Go
Antes de testar este exemplo, siga as instruções de configuração para 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 no Serviço Gerenciado para Apache Kafka, configure as Application Default Credentials(ADC). Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Java
Antes de testar este exemplo, siga as instruções de configuração para 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 no Serviço Gerenciado para Apache Kafka, configure as Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Python
Antes de testar este exemplo, siga as instruções de configuração para 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 no Serviço Gerenciado para Apache Kafka, configure as Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Configurar a retenção de mensagens
O Kafka armazena mensagens em arquivos de segmento de registro. Por padrão, o Kafka exclui arquivos de segmento após um período de armazenamento ou quando uma partição excede um limite de tamanho de dados. É possível mudar esse comportamento ativando a compactação de registros . Se a compactação de registros estiver ativada, o Kafka manterá apenas o valor mais recente de cada chave.
O Serviço Gerenciado do Google Cloud para Apache Kafka usa o armazenamento em camadas, o que significa que os segmentos de registro concluídos são armazenados remotamente, em vez de armazenamento local. Para saber mais sobre o armazenamento em camadas, consulte Armazenamento em camadas na documentação do Apache Kafka.
Definir os valores de retenção
Se a compactação de registros não estiver ativada, as configurações a seguir controlarão como o Kafka armazena arquivos de segmento de registro:
retention.ms: o período máximo de tempo para salvar arquivos de segmento, em milissegundos.retention.bytes: o número máximo de bytes a serem armazenados por partição. Se os dados em uma partição excederem esse valor, o Kafka descartará arquivos de segmento mais antigos.
Para atualizar essas configurações, use a CLI gcloud ou a CLI do Kafka:
gcloud
Para definir a retenção de mensagens, execute o
gcloud managed-kafka topics update
comando.
gcloud managed-kafka topics update TOPIC_ID \
--cluster=CLUSTER_ID \
--location=LOCATION_ID \
--configs=retention.ms=RETENTION_PERIOD,retention.bytes=MAX_BYTES
Substitua:
- TOPIC_ID: o ID do tópico.
- CLUSTER_ID: o ID do cluster que contém o tópico.
- LOCATION_ID: o local do cluster.
- RETENTION_PERIOD: o período máximo de tempo para armazenar arquivos de segmento, em milissegundos.
- MAX_BYTES: o número máximo de bytes a serem armazenados por partição.
CLI do Kafka
Antes de executar esse comando, instale as ferramentas de linha de comando do Kafka em uma VM do Compute Engine. A VM precisa conseguir acessar uma sub-rede conectada ao cluster do Serviço Gerenciado para Apache Kafka. Siga as instruções em Produzir e consumir mensagens com as ferramentas de linha de comando do Kafka.
Execute o comando kafka-configs.sh:
kafka-configs.sh --alter \
--bootstrap-server=BOOTSTRAP_ADDRESS \
--command-config client.properties \
--entity-type topics \
--entity-name TOPIC_ID \
--add-config retention.ms=RETENTION_PERIOD,retention.bytes=MAX_BYTES
Substitua:
- BOOTSTRAP_ADDRESS: o endereço de inicialização do cluster do Serviço Gerenciado para Apache Kafka.
- TOPIC_ID: o ID do tópico.
- RETENTION_PERIOD: o período máximo de tempo para armazenar arquivos de segmento, em milissegundos.
- MAX_BYTES: o número máximo de bytes a serem armazenados por partição.
Ativar a compactação de registros
Se a compactação de registros estiver ativada, o Kafka armazenará apenas a mensagem mais recente de cada chave. A compactação de registros está desativada por padrão. Para ativar a compactação de registros de
um tópico, defina a cleanup.policy configuração como "compact", da seguinte maneira:
gcloud
Execute o
gcloud managed-kafka topics update
comando.
gcloud managed-kafka topics update TOPIC_ID \
--cluster=CLUSTER_ID \
--location=LOCATION_ID \
--configs=cleanup.policy=compact
Substitua:
- TOPIC_ID: o ID do tópico.
- CLUSTER_ID: o ID do cluster que contém o tópico.
- LOCATION_ID: o local do cluster.
CLI do Kafka
Antes de executar esse comando, instale as ferramentas de linha de comando do Kafka em uma VM do Compute Engine. A VM precisa conseguir acessar uma sub-rede conectada ao cluster do Serviço Gerenciado para Apache Kafka. Siga as instruções em Produzir e consumir mensagens com as ferramentas de linha de comando do Kafka.
Execute o comando kafka-configs.sh:
kafka-configs.sh --alter \
--bootstrap-server=BOOTSTRAP_ADDRESS \
--command-config client.properties \
--entity-type topics \
--entity-name TOPIC_ID \
--add-config cleanup.policy=compact
Substitua:
- BOOTSTRAP_ADDRESS: o endereço de inicialização do cluster do Serviço Gerenciado para Apache Kafka.
- TOPIC_ID: o ID do tópico.
Limitações
Não é possível substituir as configurações de tópico para armazenamento remoto, como
remote.storage.enable.Não é possível substituir as configurações de tópico para arquivos de segmento de registro, como
segment.bytes.A ativação da compactação de registros para um tópico desativa implicitamente o armazenamento em camadas para esse tópico. Todos os arquivos de registro do tópico são armazenados localmente.