Crie um tópico

No Pub/Sub, um tópico é um recurso denominado que representa um feed de mensagens. Tem de criar um tópico antes de poder publicar ou subscrever o mesmo. O Pub/Sub suporta dois tipos de tópicos: um tópico padrão e um tópico 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 o artigo Acerca dos tópicos de importação.

Para criar um tópico, pode usar a Google Cloud consola, a Google Cloud CLI, a biblioteca cliente ou a API Pub/Sub.

Antes de começar

Funções e autorizações necessárias

Para receber as autorizações de que precisa para criar um tópico, peça ao seu administrador para lhe conceder a função IAM de editor do Pub/Sub(roles/pubsub.editor) no seu projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para criar um tópico. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para criar um tópico:

  • Conceda esta autorização para criar um tópico no projeto: pubsub.topics.create

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Pode configurar o controlo de acesso ao nível do projeto e ao nível do recurso individual. Pode criar uma subscrição num projeto e anexá-la a um tópico localizado num projeto diferente. Certifique-se de que tem as autorizações necessárias para cada projeto.

Propriedades de um tópico

Quando cria ou atualiza um tópico, tem de especificar as respetivas propriedades.

Adicione uma subscrição predefinida

Adiciona uma subscrição predefinida ao tópico Pub/Sub. Pode criar outra subscrição para o tópico depois de o criar. A subscrição predefinida tem as seguintes propriedades:

  • ID da subscrição de -sub
  • Tipo de fornecimento de extração
  • 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

Use um esquema

Um esquema é um formato que o campo de dados da mensagem tem de seguir. Um esquema é um contrato entre o publicador e o subscritor que o Pub/Sub aplica. Os esquemas de tópicos ajudam a padronizar os tipos de mensagens e as autorizações para permitir que sejam consumidos por diferentes equipas na sua organização. O Pub/Sub cria uma autoridade central para tipos de mensagens e autorizações. Para criar um tópico com esquema, consulte a vista geral do esquema.

Ative o carregamento

A ativação desta propriedade permite-lhe carregar dados de streaming de origens externas para um tópico, para que possa usar as funcionalidades do Google Cloud. Para criar um tópico de importação para carregamento, consulte o seguinte:

Ative a retenção de mensagens

Especifica durante quanto tempo o tópico Pub/Sub retém as mensagens após a publicação. Após a duração da retenção de mensagens, o Pub/Sub pode rejeitar a mensagem, independentemente do respetivo estado de confirmação. As taxas de armazenamento de mensagens são cobradas pelo armazenamento de todas as mensagens publicadas no tópico

  • Predefinição = Não ativada
  • Valor mínimo = 10 minutos
  • Valor máximo = 31 dias

Exporte dados de mensagens para o BigQuery

A ativação desta propriedade permite-lhe criar uma subscrição do BigQuery que escreve mensagens numa tabela do BigQuery existente à medida que são recebidas. Não precisa de configurar um cliente de subscrição separado. Para mais informações acerca das subscrições do BigQuery, consulte o artigo Subscrições do BigQuery.

Faça uma cópia de segurança dos dados das mensagens no Cloud Storage

A ativação desta propriedade permite-lhe criar uma subscrição do Cloud Storage que escreve mensagens numa tabela do Cloud Storage existente à medida que são recebidas. Não precisa de configurar um cliente de subscrição separado. Para mais informações sobre as subscrições do Cloud Storage, consulte o artigo Subscrições do Cloud Storage.

Transformações

As SMTs de tópicos permitem modificações simples aos dados e atributos das mensagens diretamente no Pub/Sub. Esta funcionalidade permite a limpeza, a filtragem ou a conversão de formato de dados antes de as mensagens serem publicadas no tópico.

Para mais informações sobre os SMTs, consulte a vista geral dos SMTs.

Google-owned and Google-managed encryption key

Especifica que o tópico está encriptado através de Google-owned and Google-managed encryption keys. O Pub/Sub encripta as mensagens com o algoritmo AES-256 por predefinição, pelo que a escolha desta opção mantém o comportamento predefinido. Google-owned and Google-managed encryption keys A Google processa a gestão e a rotação de chaves automaticamente, garantindo que as suas mensagens estão sempre protegidas com a encriptação mais forte disponível. Esta opção não requer mais nenhuma configuração. Para mais informações sobre a Google-owned and Google-managed encryption keys, consulte o artigo Encriptação predefinida com o Google-owned and Google-managed encryption keys.

Chave do Cloud KMS

Especifica se o tópico está encriptado com uma chave de encriptação gerida pelo cliente (CMEK). Por predefinição, o Pub/Sub encripta as mensagens com o Google-owned and Google-managed encryption keys . Se especificar esta opção, o Pub/Sub usa o padrão de encriptação de envelope com CMEK. Nesta abordagem, o Cloud KMS não encripta as mensagens. Em alternativa, o Cloud KMS encripta as chaves de encriptação de dados (DEKs) que o Pub/Sub cria para cada tópico. O Pub/Sub encripta as mensagens através da DEK mais recente gerada para o tópico. O Pub/Sub desencripta as mensagens pouco antes de serem entregues aos subscritores. Para mais informações sobre como criar uma chave, consulte o artigo Configure a encriptação de mensagens.

Crie um tópico

Crie um tópico antes de o poder publicar ou subscrever.

Consola

Para criar um tópico, siga estes passos:

  1. Na Google Cloud consola, aceda à página Criar tópico do Pub/Sub.

    Aceda a Criar tópico

  2. No campo ID do tópico, introduza um ID para o tópico. Para mais informações sobre a atribuição de nomes a tópicos, consulte as diretrizes de nomenclatura.

  3. Mantenha a opção Adicionar uma subscrição predefinida.

  4. Opcional. Não selecione as outras opções.

  5. Clique em Criar tópico.

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. Para criar um tópico, execute o comando gcloud pubsub topics create:

    gcloud pubsub topics create TOPIC_ID
  3. REST

    Para criar um tópico, use o método projects.topics.create:

    O pedido tem de ser autenticado com um token de acesso no cabeçalho Authorization. Para obter uma chave de acesso para as Credenciais padrão da aplicação atuais: gcloud auth application-default print-access-token.

    PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
    Authorization: Bearer ACCESS_TOKEN
    

    Onde:

    • PROJECT_ID é o ID do seu projeto.
    • TOPIC_ID é o ID do tópico.

    Resposta:

    {
    "name": "projects/PROJECT_ID/topics/TOPIC_ID"
    }

    C++

    Antes de experimentar este exemplo, siga as instruções de configuração do C++ no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.

    namespace pubsub = ::google::cloud::pubsub;
    namespace pubsub_admin = ::google::cloud::pubsub_admin;
    [](pubsub_admin::TopicAdminClient client, std::string project_id,
       std::string topic_id) {
      auto topic = client.CreateTopic(
          pubsub::Topic(std::move(project_id), std::move(topic_id)).FullName());
      // Note that kAlreadyExists is a possible error when the library retries.
      if (topic.status().code() == google::cloud::StatusCode::kAlreadyExists) {
        std::cout << "The topic already exists\n";
        return;
      }
      if (!topic) throw std::move(topic).status();
    
      std::cout << "The topic was successfully created: " << topic->DebugString()
                << "\n";
    }

    C#

    Antes de experimentar este exemplo, siga as instruções de configuração do C# no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.

    
    using Google.Cloud.PubSub.V1;
    using Grpc.Core;
    using System;
    
    public class CreateTopicSample
    {
        public Topic CreateTopic(string projectId, string topicId)
        {
            PublisherServiceApiClient publisher = PublisherServiceApiClient.Create();
            var topicName = TopicName.FromProjectTopic(projectId, topicId);
            Topic topic = null;
    
            try
            {
                topic = publisher.CreateTopic(topicName);
                Console.WriteLine($"Topic {topic.Name} created.");
            }
            catch (RpcException e) when (e.Status.StatusCode ==