Este documento mostra como publicar mensagens num tópico com um esquema.
Antes de começar
Antes de configurar o fluxo de trabalho de publicação, certifique-se de que concluiu as seguintes tarefas:
- Compreenda como funcionam os esquemas do Pub/Sub.
- Associe um esquema a um tópico.
Funções necessárias
    
      Para receber as autorizações de que
      precisa para publicar mensagens num tópico,
    
      peça ao seu administrador para lhe conceder a
    
  
  
    
      função de IAM Publicador do Pub/Sub  (roles/pubsub.publisher)
     no tópico.
  
  
  
  
  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.
  
  
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Precisa de autorizações adicionais para criar ou atualizar tópicos e subscrições.Publique mensagens com esquema
Pode publicar mensagens num tópico associado a um esquema. Tem de codificar as mensagens no esquema e no formato especificados quando criou o tópico. Uma mensagem corresponde ao esquema associado ao tópico se corresponder a qualquer uma das revisões do esquema no intervalo de revisões permitido. As mensagens são avaliadas em função das revisões por ordem da revisão permitida mais recente até ser encontrada uma correspondência ou ser alcançada a revisão permitida mais antiga. O Pub/Sub adiciona os seguintes atributos a uma mensagem publicada com êxito num tópico associado a um esquema:
- googclient_schemaname: o nome do esquema usado para validação.
- googclient_schemaencoding: A codificação da mensagem, JSON ou BINARY.
- googclient_schemarevisionid: o ID de revisão do esquema usado para analisar e validar a mensagem. Cada revisão tem um ID de revisão exclusivo associado. O ID de revisão é um UUID de oito carateres gerado automaticamente.
Quando uma mensagem não corresponde a nenhuma das revisões do esquema permitidas pelo tópico, o Pub/Sub devolve um erro INVALID_ARGUMENT ao pedido de publicação. 
O Pub/Sub apenas avalia as mensagens em função das revisões do esquema no momento da publicação. Confirmar uma nova revisão do esquema ou alterar o esquema associado a um tópico após a publicação de uma mensagem não volta a avaliar essa mensagem nem altera nenhum dos atributos da mensagem do esquema anexado.
Pode publicar mensagens num tópico com um esquema associado num projeto do Google Cloud através da consola do Google Cloud, da CLI gcloud, da API Pub/Sub ou das bibliotecas de cliente do Google Cloud.
gcloud
- In the Cloud de Confiance console, activate Cloud Shell. - At the bottom of the Cloud de Confiance 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. 
- Publique uma mensagem de exemplo com o comando gcloud pubsub topics publish. - gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE- Substitua o seguinte: 
- TOPIC_ID: nome do tópico que já criou. 
- MESSAGE: mensagem publicada no tópico. Uma mensagem de exemplo pode ser - {"name": "Alaska", "post_abbr": "AK"}.
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.
Avro ProtoC#
Antes de experimentar este exemplo, siga as instruções de configuração do C# em 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.
Avro ProtoIr
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 do Pub/Sub.
Avro ProtoJava
Antes de experimentar este exemplo, siga as instruções de configuração do Java no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Java do Pub/Sub.
Avro ProtoNode.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Avro Buffer de protocoloNode.js
Antes de experimentar este exemplo, siga as instruções de configuração do Node.js em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js do Pub/Sub.
Avro Buffer de protocoloPHP
Antes de experimentar este exemplo, siga as instruções de configuração do PHP no artigo Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API PHP Pub/Sub.
Avro Buffer de protocoloPython
Antes de experimentar este exemplo, siga as instruções de configuração do Python em Início rápido: usar bibliotecas cliente. Para mais informações, consulte a documentação de referência da API Python Pub/Sub.
Avro Buffer de protocoloRuby
O exemplo seguinte usa a biblioteca cliente Ruby Pub/Sub v3. Se ainda estiver a usar a biblioteca v2, consulte o guia de migração para a v3. Para ver uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Ruby em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby Pub/Sub.
Avro Buffer de protocoloO que se segue?
- Para restringir as localizações nas quais o Pub/Sub armazena dados de mensagens, consulte o artigo Restringir localizações de recursos do Pub/Sub. 
- Para saber como receber mensagens, consulte o artigo Escolha um tipo de subscrição.