En esta página, se muestra cómo crear y administrar esquemas para temas de Pub/Sub.
Un esquema es un formato que deben seguir los mensajes, ya que se crea un contrato entre el publicador y el suscriptor que aplicará Pub/Sub. También facilitan el consumo entre equipos de flujos de datos en tu organización mediante la creación de una autoridad central para los tipos de mensajes y los permisos.
Un esquema de Pub/Sub define los nombres y tipos de datos de campos en un mensaje. Puedes crear esquemas como recursos con versión independiente, asociar esquemas con varios temas de Pub/Sub y usarlos para validar la estructura de mensajes publicados.
Crea esquemas
Puedes crear un esquema y asignarle uno o más temas, o crear un esquema durante la creación del tema. Después de asignar un esquema a un tema, cada mensaje que el tema recibe de los publicadores debe seguir ese esquema.
Puedes crear un esquema con Cloud Console, la herramienta de gcloud
y la API de Pub/Sub:
Console
Para crear un esquema, sigue estos pasos:
En Cloud Console, ve a la página Esquemas de Pub/Sub.
Haz clic en Crear esquema.
En el campo ID del esquema, ingresa un ID para tu esquema.
Para Tipo de esquema, selecciona Avro o Protocol Buffer. Obtén más información sobre los tipos de esquemas a continuación.
En el campo Definición de esquema, ingresa la definición del Avro de Protocol Buffer para tu esquema.
Haz clic en Crear para guardar el esquema.
gcloud
gcloud beta pubsub schemas create SCHEMA_ID \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION
Aquí:
- SCHEMA_TYPE es
AVRO
oPROTOCOL_BUFFER
. - SCHEMA_DEFINITION es un
string
que contiene la definición del esquema con el formato del tipo de esquema seleccionado.
REST
Para crear un esquema, envía una solicitud POST como la siguiente:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/SCHEMA_ID Authorization: Bearer $(gcloud auth application-default print-access-token) Content-Type: application/json --data @response-body.json
Especifica los siguientes campos en el cuerpo de la solicitud:
{ "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE }
Aquí:
- SCHEMA_TYPE es
AVRO
oPROTOCOL_BUFFER
. - SCHEMA_DEFINITION es una string que contiene la definición del esquema, con el formato seleccionado según el tipo de esquema elegido.
El cuerpo de la respuesta debe contener una representación JSON de un recurso de esquema. Por ejemplo:
{ "name": SCHEMA_NAME, "type": SCHEMA_TYPE, "definition": SCHEMA_DEFINITION }
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C++.
Avro ProtoGo
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.
Avro ProtoJava
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java.
Avro Búfer de protocoloPython
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Python.
Avro Búfer de protocoloRuby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Ruby.
Avro Búfer de protocoloDebes asignar el esquema a un tema para poder usarlo. Un solo esquema puede asociarse con cualquier cantidad de temas.
Tipos de esquemas
Puedes crear un esquema con los siguientes marcos de trabajo:
Por ejemplo, el siguiente esquema define un mensaje con un campo string
, un campo float
y el campo boolean
:
Avro
{ "type" : "record", "name" : "Avro", "fields" : [ { "name" : "StringField", "type" : "string" }, { "name" : "FloatField", "type" : "float" }, { "name" : "BooleanField", "type" : "boolean" }, ] }
Búfer de protocolo
syntax = "proto3"; message ProtocolBuffer { string string_field = 1; float float_field = 2; bool boolean_field = 3; }
Obtén detalles del esquema
Puedes obtener los detalles de un esquema por su nombre mediante Cloud Console, la herramienta de gcloud
y la API de Pub/Sub:
Console
En Cloud Console, ve a la página Esquemas de Pub/Sub.
En la lista, selecciona el esquema que deseas ver.
gcloud
gcloud beta pubsub schemas describe SCHEMA_NAME
REST
Para obtener los detalles del esquema, envía una solicitud GET como la siguiente:
GET https://pubsub.googleapis.com/v1/SCHEMA_NAME
Si se ejecuta con éxito, el cuerpo de la respuesta contendrá una instancia de la clase de esquema.
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C++.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Ruby.
Enumera esquemas
Puedes enumerar los esquemas en un proyecto de Google Cloud con Cloud Console, la herramienta de gcloud
y la API de Pub/Sub:
Console
En Cloud Console, ve a la página Esquemas de Pub/Sub. Esta página contiene una lista de todos los esquemas en el proyecto actual.
gcloud
gcloud beta pubsub schemas list
REST
Para enumerar los esquemas de un proyecto, envía una solicitud GET como la siguiente:
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas
Si se ejecuta correctamente, el cuerpo de la respuesta contendrá un objeto JSON que contendrá todos los esquemas del proyecto.
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C++.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Ruby.
Borra esquemas
Puedes borrar un esquema con Cloud Console, la herramienta de gcloud
y la API de Pub/Sub:
Console
En Cloud Console, ve a la página de esquemas de Pub/Sub.
En la lista, selecciona el esquema que deseas borrar.
Haz clic en Borrar.
gcloud
gcloud beta pubsub schemas delete SCHEMA_NAME
REST
Para borrar un esquema, envía una solicitud DELETE como la siguiente:
DELETE https://pubsub.googleapis.com/v1/SCHEMA_NAME
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para C++.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido sobre el uso de bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Pub/Sub para Ruby.
Valida esquemas de mensajes
Puedes validar que los mensajes cumplan con un esquema determinado, antes o después de que se cree un recurso de esquema. Esto puede ser útil para garantizar que los mensajes que intentes enviar a través de un tema asociado con un esquema coincidan en realidad antes de aplicar el esquema (que no se puede deshacer).
Para validar un mensaje contra un esquema que aún no se creó, pasa el tipo de esquema y la definición:
gcloud
gcloud beta pubsub schemas validate-message \ --type=SCHEMA_TYPE \ --definition=SCHEMA_DEFINITION \ --message-encoding=MESSAGE_ENCODING \ --message=MESSAGE
Aquí:
- SCHEMA_TYPE es
AVRO
oPROTOCOL_BUFFER
. - SCHEMA_DEFINITION es un
string
que contiene la definición del esquema con el formato del tipo de esquema seleccionado. - MESSAGE_ENCODING es
JSON
oBINARY
. - MESSAGE es el mensaje que se debe validar. Para que sea válido, debe estar codificado según el
MESSAGE_ENCODING
especificado y cumplir con elSCHEMA_DEFINITION
especificado.
REST
Solicitud:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/:validateMessage Authorization: Bearer $(gcloud auth application-default print-access-token)
Especifica los siguientes campos en el cuerpo de la solicitud:
{ "schema": { "definition": SCHEMA_DEFINITION "type": SCHEMA_TYPE } "encoding": MESSAGE_ENCODING "message": MESSAGE }
Aquí:
- SCHEMA_TYPE es
AVRO
oPROTOCOL_BUFFER
. - SCHEMA_DEFINITION es una string que contiene la definición del esquema, con el formato seleccionado según el tipo de esquema elegido.
- MESSAGE_ENCODING es
JSON
oBINARY
. - MESSAGE es el mensaje codificado en base64 para validar. Para que sea válido, debe estar codificado según el
MESSAGE_ENCODING
especificado y cumplir con elSCHEMA_DEFINITION
especificado.
Si la solicitud es correcta, la respuesta es un objeto JSON vacío.
Para validar un mensaje contra un esquema existente, pasa el nombre del esquema:
gcloud
gcloud beta pubsub schemas validate-message \ --message-encoding=MESSAGE_ENCODING \ --message=MESSAGE \ --schema-name=SCHEMA_NAME
Aquí:
- SCHEMA_NAME es el nombre de un esquema existente.
- MESSAGE_ENCODING es
JSON
oBINARY
. - MESSAGE es el mensaje que se debe validar. Para que sea válido, debe estar codificado según el
MESSAGE_ENCODING
especificado y cumplir con la definición de esquema deSCHEMA_NAME
.
REST
Solicitud:
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/schemas/:validateMessage Authorization: Bearer $(gcloud auth application-default print-access-token)
Especifica los siguientes campos en el cuerpo de la solicitud:
{ "schema": { "name": SCHEMA_NAME } "encoding": MESSAGE_ENCODING "message": MESSAGE }
Aquí:
- SCHEMA_NAME es el nombre de un esquema existente.
- MESSAGE_ENCODING es
JSON
oBINARY
. - MESSAGE es el mensaje codificado en base64 para validar. Para que sea válido, debe estar codificado según el
MESSAGE_ENCODING
especificado y cumplir con elSCHEMA_DEFINITION
especificado.
Si la solicitud es correcta, la respuesta es un objeto JSON vacío.