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.
- Associe 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
papel do IAM Publisher do Pub/Sub (roles/pubsub.publisher
)
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. Codifique as mensagens no esquema e no formato especificados ao criar 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, da mais recente permitida até que uma correspondência seja encontrada ou a revisão mais antiga permitida seja alcançada. O Pub/Sub adiciona os seguintes atributos a uma mensagem publicada com sucesso 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 BINARY.googclient_schemarevisionid
: o ID da revisão do esquema usado para analisar e validar a mensagem. Cada revisão tem um ID 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 mensagens em relação a 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 depois de publicar uma mensagem não reavalia essa mensagem nem muda nenhum dos atributos de mensagem do esquema anexado.
É 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 Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted 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: o nome do tópico que você já criou.
MESSAGE: mensagem publicada no tópico. Uma mensagem de exemplo 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
O exemplo a seguir usa a versão principal da biblioteca de cliente do Go Pub/Sub (v2). Se você ainda estiver usando a biblioteca v1, consulte o guia de migração para a v2. Para conferir uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
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
O exemplo a seguir usa a biblioteca de cliente do Ruby Pub/Sub v3. Se você ainda estiver usando a biblioteca v2, consulte o guia de migração para a v3. Para conferir uma lista de exemplos de código do Ruby v2, consulte os exemplos de código descontinuados.
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 mensagens, consulte Como restringir locais de recursos do Pub/Sub.
Para saber mais sobre como receber mensagens, consulte Escolher um tipo de assinatura.