Crie subscrições de obtenção

Este documento descreve como criar uma subscrição de obtenção. Pode usar a consola, a CLI Google Cloud, a biblioteca cliente ou a API Pub/Sub para criar uma subscrição de obtenção. Google Cloud

Antes de começar

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

Para criar uma subscrição, tem de configurar o controlo de acesso ao nível do projeto. Também precisa de autorizações ao nível do recurso se as suas subscrições e tópicos estiverem em projetos diferentes, conforme abordado mais adiante nesta secção.

Para receber as autorizações de que precisa para criar subscrições de obtenção, peça ao seu administrador para lhe conceder a função IAM Editor do Pub/Sub (roles/pubsub.editor) no 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 subscrições de obtenção. 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 subscrições de obtenção:

  • Extrair de uma subscrição: pubsub.subscriptions.consume
  • Crie uma subscrição: pubsub.subscriptions.create
  • Elimine uma subscrição: pubsub.subscriptions.delete
  • Obtenha uma subscrição: pubsub.subscriptions.get
  • Anuncie uma subscrição: pubsub.subscriptions.list
  • Atualize uma subscrição: pubsub.subscriptions.update
  • Anexe uma subscrição a um tópico: pubsub.topics.attachSubscription
  • Obtenha a Política IAM para uma subscrição: pubsub.subscriptions.getIamPolicy
  • Configure a política IAM para uma subscrição: pubsub.subscriptions.setIamPolicy

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

Se precisar de criar subscrições de obtenção num projeto associadas a um tópico noutro projeto, peça ao administrador do tópico que lhe conceda também a função de IAM (roles/pubsub.editor)editor do Pub/Sub no tópico.

Extraia propriedades de subscrição

Quando configura uma subscrição de obtenção, pode especificar as seguintes propriedades.

Propriedades comuns

Saiba mais sobre as propriedades de subscrição comuns que pode definir em todas as subscrições.

Entrega exatamente uma vez

Entrega exatamente uma vez. Se estiver definida, a Pub/Sub cumpre as garantias de entrega exatamente uma vez. Se não for especificado, a subscrição suporta a entrega pelo menos uma vez para cada mensagem.

Crie uma subscrição de obtenção

Os exemplos seguintes demonstram como criar uma subscrição com entrega de obtenção, usando as predefinições fornecidas.

Consola

Para criar uma subscrição de obtenção, conclua os passos seguintes.

  1. Na Google Cloud consola, aceda à página Subscrições.

    Aceda a Subscrições

  2. Clique em Criar subscrição.
  3. No campo ID da subscrição, introduza um nome.

    Para obter informações sobre como atribuir um nome a uma subscrição, consulte as Diretrizes para atribuir um nome a um tópico ou a uma subscrição.

  4. Escolha ou crie um tópico no menu pendente. A subscrição recebe mensagens do tópico.
  5. Mantenha o Tipo de fornecimento como Extração.
  6. Mantenha todos os outros valores predefinidos.
  7. Clique em Criar.

Também pode criar uma subscrição na secção Tópicos. Este atalho é útil para associar tópicos a subscrições.

  1. Na Google Cloud consola, aceda à página Tópicos.

    Aceder a Tópicos

  2. Clique emjunto ao tópico no qual quer criar uma subscrição.
  3. No menu de contexto, selecione Criar subscrição.
  4. Introduza o ID da subscrição.

    Para obter informações sobre como atribuir um nome a uma subscrição, consulte as Diretrizes para atribuir um nome a um tópico ou a uma subscrição.

  5. Mantenha o Tipo de fornecimento como Extração.
  6. Mantenha todos os outros valores predefinidos.
  7. Clique em Criar.

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 uma subscrição de obtenção, execute o comando gcloud pubsub subscriptions create.
    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID

    Substitua o seguinte:

    • SUBSCRIPTION_ID: o nome ou o ID da sua nova subscrição de obtenção.
    • TOPIC_ID: o nome ou o ID do seu tópico.
  3. REST

    Para criar uma subscrição de obtenção, use o método projects.subscriptions.create:

    Pedido:

    O pedido tem de ser autenticado com um token de acesso no cabeçalho Authorization. Para obter um token 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/subscriptions/SUBSCRIPTION_ID
    Authorization: Bearer ACCESS_TOKEN
    

    Corpo do pedido:

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

    Onde:

    • PROJECT_ID é o ID do seu projeto.
    • SUBSCRIPTION_ID é o ID da sua subscrição.
    • TOPIC_ID é o ID do tópico.

    Resposta:

    {
    "name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID",
    "topic": "projects/PROJECT_ID/topics/TOPIC_ID",
    "pushConfig": {},
    "ackDeadlineSeconds": 10,
    "messageRetentionDuration": "604800s",
    "expirationPolicy": {
    "ttl": "2678400s"
    }
    }

    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_admin = ::google::cloud::pubsub_admin;
    namespace pubsub = ::google::cloud::pubsub;
    [](pubsub_admin::SubscriptionAdminClient client,
       std::string const& project_id, std::string const& topic_id,
       std::string const& subscription_id) {
      google::pubsub::v1::Subscription request;
      request.set_name(
          pubsub::Subscription(project_id, subscription_id).FullName());
      request.set_topic(pubsub::Topic(project_id, topic_id).FullName());
      auto sub = client.CreateSubscription(request);
      if (sub.status().code() == google::cloud::StatusCode::kAlreadyExists) {
        std::cout << "The subscription already exists\n";
        return;
      }
      if (!sub) throw std::move(sub).status();
    
      std::cout << "The subscription was successfully created: "
                << sub->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;
    
    public class CreateSubscriptionSample
    {
        public Subscription CreateSubscription(string projectId, string topicId, string subscriptionId)
        {
            SubscriberServiceApiClient subscriber = SubscriberServiceApiClient.Create();
            TopicName topicName = TopicName.FromProjectTopic(projectId, topicId);
    
            SubscriptionName subscriptionName = SubscriptionName.FromProjectSubscription(projectId, subscriptionId);
            Subscription subscription = null;
    
            try
            {
                subscription = subscriber.CreateSubscription(subscriptionName, topicName, pushConfig: null, ackDeadlineSeconds: 60);
            }
            catch (RpcException e) when (e.Status.StatusCode == StatusCode.AlreadyExists)
            {
                // Already exists.  That's fine.
            }
            return subscription;
        }
    }

    Ir

    O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.

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

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/pubsub/v2"
    	"cloud.google.com/go/pubsub/v2/apiv1/pubsubpb"
    )
    
    func create(w io.Writer, projectID, topic, subscription string) error {