No Pub/Sub, um tópico é um recurso nomeado que representa um feed de mensagens. É necessário criar um tópico para poder publicar ou assinar nele. O Pub/Sub oferece suporte a dois tipos de tópicos: um padrão e um de importação.
Este documento descreve como criar um tópico padrão do Pub/Sub. Se quiser saber mais sobre um tópico de importação e como criar um, consulte Sobre tópicos de importação.
Para criar um tópico, use o console Cloud de Confiance , a Google Cloud CLI, a biblioteca de cliente ou a API Pub/Sub.
Antes de começar
Saiba mais sobre o serviço Pub/Sub e a terminologia dele.
Saiba mais sobre o processo de publicação.
Papéis e permissões necessárias
Para receber as permissões necessárias
para criar um tópico,
peça ao administrador para conceder a você o
papel do IAM de Editor do Pub/Sub(roles/pubsub.editor)
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 criar 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 criar um tópico:
-
Conceda esta permissão para criar um tópico no projeto:
pubsub.topics.create
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
É possível configurar o controle de acesso no nível do projeto e no nível de cada recurso. É possível criar uma assinatura em um projeto e anexá-la a um tópico localizado em outro projeto. Verifique se você tem as permissões necessárias para cada projeto.
Propriedades de um tema
Ao criar ou atualizar um tópico, é necessário especificar as propriedades dele.
Adicione uma assinatura padrão
Adiciona uma assinatura padrão ao tópico do Pub/Sub. Você pode criar outra assinatura para o tópico depois que ele for criado. A assinatura padrão tem as seguintes propriedades:
- ID da assinatura de
-sub - Tipo de entrega pull
- Duração da retenção de mensagens de sete dias
- Expiração após 31 dias de inatividade
- Prazo de confirmação de recebimento de 10 segundos
- Política de repetição imediata
Ativar ingestão
Ao ativar essa propriedade, você pode ingerir dados de streaming de fontes externas em um tópico para usar os recursos do Cloud de Confiance. Para criar um tópico de importação para ingestão, consulte o seguinte:
Ativar a retenção de mensagens de tópicos
Por padrão, um tópico do Pub/Sub descarta mensagens assim que são confirmadas por todas as assinaturas anexadas a ele. Também é possível configurar um tópico para reter mensagens por um período de até 31 dias, com um período mínimo de retenção de 10 minutos.
Com a retenção de mensagens, as assinaturas podem repetir mensagens confirmadas anteriormente ou mensagens publicadas antes da criação da assinatura. Para mais informações, consulte Reproduzir e limpar mensagens com busca.
Os custos de armazenamento das mensagens retidas pelo tópico são cobrados no projeto dele. Depois que o período de armazenamento de mensagens expira, o Pub/Sub pode descartar a mensagem, independente do estado de confirmação.
Para conferir métricas sobre mensagens retidas, use as seguintes métricas do Cloud Monitoring:
topic/num_retained_messages: o número de mensagens retidastopic/oldest_retained_message_age: A idade da mensagem retida mais antigatopic/retained_bytes: o tamanho total das mensagens retidas, em bytes.
Exportar dados de mensagem para o BigQuery
Ao ativar essa propriedade, é possível criar uma assinatura do BigQuery que grava mensagens em uma tabela do BigQuery conforme elas são recebidas. Não é necessário configurar um cliente assinante separado. Para mais informações sobre as assinaturas do BigQuery, consulte Assinaturas do BigQuery.
Fazer backup de dados de mensagens no Cloud Storage
Ao ativar essa propriedade, você pode criar uma assinatura do Cloud Storage que grava mensagens em uma tabela do Cloud Storage à medida que elas são recebidas. Não é necessário configurar um cliente assinante separado. Para mais informações sobre as assinaturas do Cloud Storage, consulte Assinaturas do Cloud Storage.
Transformações
Com as SMTs de tópico, é possível fazer modificações leves nos dados e atributos das mensagens diretamente no Pub/Sub. Esse recurso permite a limpeza de dados, filtragem ou conversão de formato antes que as mensagens sejam publicadas no tópico.
Para mais informações sobre SMTs, consulte a visão geral de SMTs.
Google Cloud-powered encryption key
Especifica que o tópico está criptografado usando Google Cloud-powered encryption keys. O Pub/Sub criptografa mensagens com Google Cloud-powered encryption keys por padrão. Portanto, escolher essa opção mantém o comportamento padrão. O Google lida com o gerenciamento e a rotação de chaves automaticamente, garantindo que suas mensagens estejam sempre protegidas com a criptografia mais forte disponível. Essa opção não requer mais configurações. Para mais informações sobre Google Cloud-powered encryption keys, consulte Criptografia padrão com Google Cloud-powered encryption keys.
Chave do Cloud KMS
Especifica se o tópico é criptografado com uma chave de criptografia gerenciada pelo cliente (CMEK). O Pub/Sub criptografa mensagens com Google Cloud-powered encryption keys por padrão. Se você especificar essa opção, o Pub/Sub usará o padrão de criptografia de envelope com a CMEK. Nessa abordagem, o Cloud KMS não criptografa as mensagens. Em vez disso, o Cloud KMS criptografa as chaves de criptografia de dados (DEKs, na sigla em inglês) que o Pub/Sub cria para cada tópico. O Pub/Sub criptografa as mensagens usando a DEK mais recente gerada para o tópico. O Pub/Sub descriptografa as mensagens pouco antes de serem entregues aos assinantes. Para mais informações sobre como criar uma chave, consulte Configurar a criptografia de mensagens.
Criar um tópico
Crie um tópico antes de publicar ou assinar.
Console
Para criar um tópico, siga estas etapas:
No console Cloud de Confiance , acesse a página Criar tópico do Pub/Sub.
No campo ID do tópico, insira um ID para o tópico. Para mais informações sobre como nomear tópicos, consulte as diretrizes de nomenclatura.
Para criar uma assinatura padrão do tema, selecione Adicionar uma assinatura padrão. Essa opção é ativada por padrão.
Opcional. Para usar um esquema com o tópico, clique em Usar um esquema e forneça o esquema. Para mais informações, consulte Criar e associar um esquema ao criar um tópico.
Para um tema padrão, deixe a opção Ativar ingestão desmarcada.
Opcional. Para reter as mensagens depois que elas forem publicadas, selecione Ativar retenção de mensagens. Selecione o período de armazenamento em dias, horas e minutos. Para mais informações, consulte Ativar a retenção de mensagens.
Opcional. Para exportar mensagens publicadas para uma tabela do BigQuery, selecione Exportar dados para o BigQuery e insira os detalhes da tabela. Para mais informações, consulte Criar assinaturas do BigQuery.
Opcional. Para fazer backup das mensagens publicadas em um bucket do Cloud Storage, selecione Fazer backup de dados de mensagens no Cloud Storage e insira os detalhes do bucket do Cloud Storage. Para mais informações, consulte Criar assinaturas do Cloud Storage.
Opcional. Em Transformações, adicione uma ou mais Transformações de mensagem única (SMTs) para manipular e filtrar dados de mensagens. Para mais informações, consulte Criar um tópico com SMTs.
Opcional. Para usar uma chave de criptografia gerenciada pelo cliente (CMEK) para criptografar mensagens, selecione Chave do Cloud KMS. Por padrão, o Pub/Sub usa a criptografia padrão do Google, que não exige uma CMEK. Para mais informações, consulte Configurar a criptografia de mensagens.
Opcional. Para gerenciar as chaves associadas ao tema, clique em Gerenciar chaves. Para mais informações, consulte Visão geral das tags.
Selecione Criar tópico.
gcloud
Para criar um tópico, execute o comando
gcloud pubsub topics create:
gcloud pubsub topics create TOPIC_ID
REST
Para criar um tópico, use o método
projects.topics.create:
A solicitação precisa ser autenticada com um token de acesso no cabeçalho Authorization. Para receber um token de acesso para as Application Default
Credentials atuais:
gcloud auth application-default print-access-token.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer ACCESS_TOKEN
Em que:
- PROJECT_ID é o ID do projeto;
- TOPIC_ID é o ID do tópico.
Resposta:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID"
}
C++
Antes de tentar esse exemplo, siga as instruções de configuração do C++ em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub para C++.
C#
Antes de tentar esse exemplo, siga as instruções de configuração do C# em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub para C#.
Go
O exemplo a seguir usa a versão principal da biblioteca de cliente do Pub/Sub para Go (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Java
Antes de tentar essa amostra, siga as instruções de configuração do Java em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub para Java (em inglês).
Node.js
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub para Node.js (em inglês).
Node.ts
Antes de tentar essa amostra, siga as instruções de configuração do Node.js em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub para Node.js (em inglês).
PHP
Antes de tentar esse exemplo, siga as instruções de configuração do PHP em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub para PHP.
Python
Antes de tentar esse exemplo, siga as instruções de configuração do Python em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do Pub/Sub.
Ruby
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Rust
Antes de testar esta amostra, siga as instruções de configuração do Rust em Guia de início rápido: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Rust.
A seguir
Escolha o tipo de assinatura do seu tópico.
Saiba como publicar uma mensagem em um tópico.
Resolver um problema de tema.
Crie ou modifique um tópico com a CLI gcloud, as APIs REST ou as bibliotecas de cliente.