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, conclua 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 Publicador 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 com papéis personalizados ou outros papéis predefinidos.
Você precisa de outras permissões 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 ao criar o tópico. Uma mensagem corresponde ao esquema associado ao tópico se corresponder a qualquer revisão do esquema no intervalo permitido de revisões. As mensagens são avaliadas em relação às revisões em ordem, da revisão permitida mais recente até que uma correspondência seja encontrada ou a revisão permitida mais antiga seja atingida. 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 às revisões de esquema no momento da publicação. A confirmação de uma nova revisão de esquema ou a mudança do esquema associado a um tópico após a publicação de 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
No Google Cloud console, ative o Cloud Shell.
Na parte de baixo do Google Cloud console, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a Google Cloud CLI já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Publique uma mensagem de exemplo usando o comando gcloud pubsub topics publish.
gcloud pubsub topics publish TOPIC_ID \ --message=MESSAGESubstitua:
TOPIC_ID: 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 v1, consulte os exemplos de código obsoletos.
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 para Java (em inglês).
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 para Node.js (em inglês).
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 para Node.js (em inglês).
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 Python do Pub/Sub.
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 obsoletos.
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 mais informações sobre como receber mensagens, consulte Escolher um tipo de assinatura.