Este documento mostra como publicar mensagens em um tópico com um esquema.
Antes de começar
Antes de configurar o fluxo de trabalho de publicação, verifique se você concluiu as seguintes tarefas:
- Entenda como os esquemas do Pub/Sub funcionam.
- Associar um esquema a um tópico.
Funções exigidas
Para receber as permissões necessárias para publicar mensagens em um tópico,
peça ao administrador para conceder a você o
Público/Subemissor (roles/pubsub.publisher
) do IAM no tópico.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Você precisa de permissões adicionais para criar ou atualizar tópicos e assinaturas.Publicar mensagens com esquema
É possível publicar mensagens em um tópico associado a um esquema. Você precisa 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 permitido de revisões. As mensagens são avaliadas em relação às revisões, começando pela mais recente até que uma correspondência seja encontrada ou a revisão mais antiga seja alcançada. O Pub/Sub adiciona os seguintes atributos a uma mensagem publicada em um 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 BINÁRIO.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 a ela. O ID da revisão é um UUID de oito caracteres gerado automaticamente.
Quando uma mensagem não corresponde a nenhuma das revisões de esquema permitidas pelo
tópico, o Pub/Sub retorna um
erro INVALID_ARGUMENT
para a solicitação de publicação.
O Pub/Sub só avalia as mensagens em relação às revisões de esquema no momento da publicação. Confirmar uma nova revisão de esquema ou mudar o esquema associado a um tópico após a publicação de uma mensagem não reavalia essa mensagem nem muda nenhum dos atributos da mensagem de esquema anexada.
É possível publicar mensagens em um tópico com um esquema associado em um projeto do Google Cloud usando o console do Google Cloud, a CLI gcloud, a API Pub/Sub ou as bibliotecas de cliente do Cloud.
gcloud
In the Google Cloud console, 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.
Publique uma mensagem de exemplo usando o comando gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGE
Substitua:
TOPIC_ID: nome do tópico que você já criou.
MESSAGE: mensagem publicada no tópico. Um exemplo de mensagem pode ser
{"name": "Alaska", "post_abbr": "AK"}
.
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++.
Avro ProtoC#
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#.
Avro ProtoGo
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.
Avro ProtoJava
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.
Avro ProtoNode.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.
Avro Buffer de protocoloNode.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.
Avro Buffer de protocoloPHP
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.
Avro Buffer de protocoloPython
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.
Avro Buffer de protocoloRuby
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.
Avro Buffer de protocoloA seguir
Para restringir os locais em que o Pub/Sub armazena dados de mensagem, consulte Como restringir locais de recursos do Pub/Sub.
Para mais informações sobre como receber mensagens, consulte Escolher um tipo de assinatura.