Os tópicos podem usar esquemas para definir um formato que as respetivas mensagens têm de seguir. Quando subscreve um tópico com um esquema, é garantido que as mensagens enviadas para o subscritor são mensagens válidas. Estas mensagens estão em conformidade com o tipo e a codificação especificados nas definições do esquema associadas ao tópico.
O subscritor pode determinar as definições de esquema associadas a um tópico consultando os seguintes atributos:
googclient_schemaname
: o nome do esquema usado para validação. Se o esquema for eliminado, o nome é_deleted-schema_
.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. Se a revisão for eliminada, o ID é_deleted-schema-revision_
.
Para saber mais sobre esquemas, consulte o artigo Vista geral do esquema.
Exemplos de código para subscrever tópicos associados a um esquema
Estes exemplos mostram como processar mensagens ao subscrever tópicos configurados com esquema.
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
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 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 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 protocoloSubscreva um tópico associado a um esquema Avro com revisões
O Avro requer que as mensagens sejam analisadas através do esquema com o qual são codificadas. Também pode traduzir mensagens para um esquema diferente através da resolução de esquemas Avro.
O Pub/Sub garante que todas as revisões de esquemas são compatíveis com todas as outras revisões, tanto para a frente como para trás. Esta compatibilidade permite que qualquer revisão seja usada como o esquema de leitor ou escritor.
Quando analisa uma mensagem codificada com uma revisão do esquema diferente da que o seu subscritor usa, pode ter de obter o esquema original e transmiti-lo como o esquema de gravação.
É recomendável colocar em cache o objeto leitor Avro que pode analisar mensagens para cada revisão do esquema encontrada, de modo a minimizar a latência e o número de chamadas para a API GetSchema
.
O código seguinte mostra estas funções:
Leia os atributos abordados na secção anterior para determinar que revisão do esquema é usada para codificar a mensagem.
Obtenha a revisão do esquema e coloque em cache um leitor gerado com a mesma.
Analise a mensagem no esquema que o seu subscritor usa.
Ir
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.
Java
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.
Python
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.
Funções necessárias
Para receber as autorizações necessárias para validar uma mensagem com base num esquema, conclua um dos seguintes passos:
- Conceda uma das seguintes funções predefinidas a uma conta de serviço:
roles/pubsub.admin
,roles/pubsub.editor
ouroles/pubsub.viewer
. Crie uma função personalizada para uma conta de serviço e adicione as seguintes autorizações
pubsub.schemas.validate
epubsub.schemas.get
.Para saber mais sobre as funções personalizadas, consulte o artigo Crie e faça a gestão de funções personalizadas do IAM.