Os tópicos podem usar esquemas para definir um formato que as mensagens devem seguir. Ao assinar um tópico com um esquema, as mensagens enviadas ao assinante são válidas. Essas mensagens estão em conformidade com o tipo e a codificação especificados nas configurações de esquema associadas ao tópico.
O assinante pode determinar as configurações do esquema associadas a um tópico analisando os seguintes atributos:
googclient_schemaname
: o nome do esquema usado para validação. Se o esquema for excluído, o nome será_deleted-schema_
.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. Se a revisão for excluída, o ID será_deleted-schema-revision_
.
Para saber mais sobre esquemas, consulte Visão geral do esquema.
Exemplos de código para se inscrever em tópicos associados a um esquema
Nestes exemplos, você vê como processar mensagens ao assinar tópicos configurados com o esquema.
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
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 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 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 protocoloInscrever-se em um tópico associado a um esquema Avro com revisões
O Avro exige que as mensagens sejam analisadas usando o esquema com que são codificadas. Também é possível traduzir mensagens para um esquema diferente usando a resolução de esquema Avro.
O Pub/Sub garante que todas as revisões de esquema sejam compatíveis com todas as outras revisões. Essa compatibilidade permite que qualquer revisão seja usada como o esquema de leitura ou gravação.
Ao analisar uma mensagem codificada com uma revisão de esquema diferente da usada pelo assinante, talvez seja necessário receber o esquema original e transmiti-lo como o esquema do gravador.
É melhor armazenar em cache o objeto leitor Avro que pode analisar mensagens para
cada revisão de esquema encontrada para minimizar a latência
e o número de chamadas para a API GetSchema
.
O código a seguir mostra essas funções:
Leia os atributos discutidos na seção anterior para determinar qual revisão de esquema é usada para codificar a mensagem.
Busque a revisão do esquema e armazene em cache um leitor gerado com ela.
Analise a mensagem no esquema usado pelo assinante.
Go
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.
Java
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.
Python
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.
Funções exigidas
Para ter as permissões necessárias para validar uma mensagem em um esquema, siga uma destas etapas:
- Conceda um dos seguintes papéis predefinidos a uma conta de serviço:
roles/pubsub.admin
,roles/pubsub.editor
ouroles/pubsub.viewer
. Crie um papel personalizado para uma conta de serviço e adicione as seguintes permissões:
pubsub.schemas.validate
epubsub.schemas.get
.Para saber mais sobre papéis personalizados, consulte Criar e gerenciar papéis personalizados do IAM.