Neste documento, explicamos como criar, atualizar, visualizar e excluir um tópico do Pub/Sub. Este documento também explica como nomear tópicos e assinaturas.
Replicação de dados em um tópico
Um tópico do Pub/Sub usa três zonas para armazenar dados. O serviço garante a replicação síncrona para pelo menos duas zonas e a replicação de melhor esforço para uma terceira zona adicional. A replicação do Pub/Sub está em apenas uma região.
Propriedades de um tópico
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. É possível criar outra assinatura para o tópico depois que ele for criado. A assinatura padrão tem as seguintes propriedades:
- ID da assinatura:
-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 10 segundos
- Política de repetição imediata
- ID da assinatura:
Esquema. O esquema é um formato que o campo de dados de mensagens precisa seguir. Um esquema é um contrato entre o editor e o assinante aplicado pelo Pub/Sub. Os esquemas de tópicos ajudam a padronizar os tipos de mensagens e permissões para que sejam consumidos por diferentes equipes na sua organização. O Pub/Sub cria uma autoridade central para tipos de mensagens e permissões. Para criar um tópico com esquema, consulte Criar e gerenciar esquemas.
Duração da retenção da mensagem. Especifica por quanto tempo o tópico do Pub/Sub retém mensagens após a publicação. Após o término da duração da retenção, o Pub/Sub pode descartar a mensagem, independentemente do estado de confirmação. As taxas de armazenamento de mensagens são cobradas pelo armazenamento de todas as mensagens publicadas no tópico.
- Padrão = não ativado
- Valor mínimo = 10 minutos
- Valor máximo = 31 dias
Use uma chave de criptografia gerenciada pelo cliente (CMEK). Especifica se o tópico é criptografado com uma CMEK. Por padrão, o Pub/Sub criptografa mensagens com chaves gerenciadas pelo Google. Se você especificar essa opção, o Pub/Sub usará o padrão de criptografia de envelope com 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) criadas pelo Pub/Sub 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.
Diretrizes para nomear um tópico, uma assinatura ou um snapshot
Um nome de recurso do Pub/Sub identifica exclusivamente um recurso do Pub/Sub, como um tópico, uma assinatura ou um snapshot. O nome do recurso precisa ter o seguinte formato:
projects/project-identifier/collection/ID
project-identifier
: precisa ser o ID do projeto, disponível no console do Google Cloud. Por exemplo,my-cool-project
.collection
: precisa sertopics
,subscriptions
ousnapshots
.ID
: precisa estar em conformidade com as seguintes diretrizes:- Não começar com a string
goog
- Começar com uma letra
- conter entre 3 e 255 caracteres;
- Contém apenas os seguintes caracteres: letras
[A-Za-z]
, números[0-9]
, traços-
, sublinhados_
, pontos.
, tils~
, mais sinais+
e sinais de porcentagem%
Você pode usar os caracteres especiais na lista anterior em nomes de recursos sem codificação para URLs. No entanto, é necessário garantir que qualquer outro caractere especial seja devidamente codificado ou decodificado quando usado em URLs. Por exemplo,
mi-tópico
é um ID inválido. No entanto,mi-t%C3%B3pico
é válido. Esse formato é importante quando você faz chamadas REST.- Não começar com a string
Crie um tópico
Crie um tópico para publicar ou se inscrever nele.
Console
Para criar um tópico, siga estas etapas:
No Console do Google Cloud, acesse a página Tópicos do Pub/Sub.
Clique em Criar tópico.
No campo Código do tópico, insira um código para o tópico.
Mantenha a opção Adicionar uma assinatura padrão.
Não selecione as outras opções.
Selecione Criar tópico.
gcloud CLI
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 conseguir um token de acesso para o Application Default Credentials: 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:
Resposta:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
Antes de testar esta amostra, siga as instruções de configuração do C++ no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API PHP do Pub/Sub.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do Pub/Sub.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby do Pub/Sub.
Restrições da política da organização
As políticas da organização podem restringir a criação de tópicos. Por exemplo, uma política pode restringir o armazenamento de mensagens em uma região do Compute Engine. Para evitar erros na criação de tópicos, examine e atualize as políticas organizacionais conforme necessário antes de criar um tópico.
Se o projeto for recém-criado, aguarde alguns minutos até a política da organização ser inicializada antes de criar um tópico.
Acesse as políticas da organização
Criar um tópico com um esquema
Ao criar um tópico, talvez você queira atribuir um esquema a ele.
Veja a seguir algumas diretrizes sobre como usar esquemas:
- Não é possível adicionar esquemas a tópicos existentes.
- É possível especificar um esquema somente ao criar um tópico.
- Depois que um esquema for associado a um tópico, não será possível atualizá-lo ou remover a associação.
- Você pode aplicar o mesmo esquema a outros tópicos.
- Se você excluir um esquema, a publicação de todos os tópicos associados falhará.
Para saber mais sobre esquemas, consulte Criar e gerenciar esquemas.
Console
Para criar um tópico e atribuir a ele um esquema, siga estas etapas:
No console do Google Cloud, acesse a página Tópicos do Pub/Sub.
Clique em Criar tópico.
No campo Código do tópico, insira um código para o tópico.
Marque a caixa Usar um esquema. Não altere as outras opções.
Clique em Selecionar um esquema do Pub/Sub e escolha Criar um novo esquema. Se você quiser usar um esquema atual, pule para a etapa 7.
No campo Schema ID, insira um ID para seu esquema.
Em Tipo de esquema, selecione Avro ou o buffer de protocolo.
No campo Definição de esquema, insira a definição de Buffer de protocolo Avro para seu esquema.
Clique em Criar para salvar o esquema.
Na caixa de diálogo Criar um tópico, procure seu esquema no campo Selecionar um esquema do Pub/Sub.
Clique em Criar para salvar o tópico e atribuí-lo com o esquema selecionado.
gcloud
Para criar um tópico atribuído com um esquema criado anteriormente, execute o comando gcloud pubsub topics create
:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID
Em que:
- TOPIC_ID é o ID do tópico que você está criando.
- ENCODING_TYPE é a codificação de mensagens validadas no esquema. Esse valor precisa ser definido como
JSON
ouBINARY
. - SCHEMA_ID é o ID de um esquema atual.
Também é possível atribuir um esquema de um projeto diferente do Google Cloud:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
Em que:
- SCHEMA_PROJECT é o ID do projeto do Google Cloud para o esquema.
- TOPIC_PROJECT é o ID do projeto do Google Cloud para o tópico.
REST
Para criar um tópico, use o método
projects.topics.create
:
Solicitação:
A solicitação precisa ser autenticada com um token de acesso no cabeçalho Authorization
. Para conseguir um token de acesso para o Application Default Credentials: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Corpo da solicitação:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
Em que:
- PROJECT_ID é o ID do projeto;
- TOPIC_ID é o ID do tópico.
- SCHEMA_NAME é o nome do esquema em que as mensagens publicadas precisam ser validadas. O formato é:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE é a codificação de mensagens validadas no esquema. Precisa ser definido como
JSON
ouBINARY
.
Resposta:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
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 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 C#.
Go
Antes de tentar esse exemplo, siga as instruções de configuração do Go 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 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 Java.
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 Node.js.
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 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 Pub/Sub Python.
Ruby
Antes de tentar esse exemplo, siga as instruções de configuração do Ruby 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 Ruby.
Excluir um tópico
Quando você exclui um tópico, as assinaturas dele não são excluídas. O
backlog de mensagens da assinatura está disponível para assinantes. Depois que um tópico é excluído, as assinaturas dele ficam com o nome de tópico _deleted-topic_
. Se você tentar
criar um tópico com o mesmo nome de um que você acabou de excluir, aguarde
um erro por um breve período.
Console
No Console do Google Cloud, acesse a página Tópicos do Pub/Sub.
Selecione um tópico e clique em
Mais ações.Clique em Excluir.
A janela Excluir tópico será exibida.
Digite
delete
e clique em Delete.
gcloud CLI
Para excluir um tópico, use o comando gcloud pubsub topics delete
:
gcloud pubsub topics delete TOPIC_ID
REST
Para excluir um tópico, use o
método
projects.topics.delete
:
Solicitação:
A solicitação precisa ser autenticada com um token de acesso no cabeçalho Authorization
. Para conseguir um token de acesso para o Application Default Credentials: gcloud auth application-default print-access-token
.
DELETE https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Em que:
Resposta:
Se a solicitação for bem-sucedida, a resposta será um objeto JSON vazio.
C++
Antes de testar esta amostra, siga as instruções de configuração do C++ no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API PHP do Pub/Sub.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do Pub/Sub.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby do Pub/Sub.
Listar um tópico
Console
No Console do Google Cloud, acesse a página Tópicos do Pub/Sub.
A página Tópicos lista todos os tópicos disponíveis.
gcloud CLI
Para listar tópicos, use o comando gcloud pubsub topics list
:
gcloud pubsub topics list
REST
Para listar tópicos, use o
método
projects.topics.list
:
Solicitação:
A solicitação precisa ser autenticada com um token de acesso no cabeçalho Authorization
. Para conseguir um token de acesso para o Application Default Credentials: gcloud auth application-default print-access-token
.
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics Authorization: Bearer ACCESS_TOKEN
Em que:
Resposta:
{ "topics": [ { "name": "projects/PROJECT_ID/topics/mytopic1", ... }, { "name": "projects/PROJECT_ID/topics/mytopic2", ... } ] }
C++
Antes de testar esta amostra, siga as instruções de configuração do C++ no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go do Pub/Sub.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API PHP do Pub/Sub.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python do Pub/Sub.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby do Pub/Sub.
Por padrão, são retornados no máximo 100 resultados por consulta. Você pode mudar essa quantidade para até 1.000 usando o parâmetro de tamanho de página.
Monitorar tópicos
É possível monitorar tópicos no Pub/Sub.
A seguir
Escolha o tipo de assinatura para o tópico.
Crie uma assinatura para seu tópico.
Crie ou modifique um tópico com a CLI gcloud.
Criar ou modificar um tópico com APIs REST.