En este documento, se explica cómo crear, actualizar, ver y borrar un tema de Pub/Sub. En este documento, también se explica cómo nombrar temas y suscripciones.
Replicación de datos en un tema
Un tema de Pub/Sub usa tres zonas para almacenar datos. El servicio garantiza la replicación síncrona en al menos dos zonas y la mejor replicación en una tercera zona adicional. La replicación de Pub/Sub está dentro de una sola región.
Propiedades de un tema
Cuando creas o actualizas un tema, debes especificar sus propiedades.
Agrega una suscripción predeterminada. Agrega una suscripción predeterminada al tema de Pub/Sub. Puedes crear otra suscripción para el tema después de que se cree. La suscripción predeterminada tiene las siguientes propiedades:
- ID de suscripción de
-sub
- Tipo de entrega de extracción
- Duración de retención de mensajes de siete días
- Vencimiento tras 31 días de inactividad
- Plazo límite de confirmación de 10 segundos
- Política de reintento inmediato
- ID de suscripción de
Esquema Un esquema es un formato que debe seguir el campo de datos del mensaje. Un esquema es un contrato entre el publicador y el suscriptor que Pub/Sub aplica. Los esquemas de tema ayudan a estandarizar los tipos de mensajes y permisos para permitir que los diferentes equipos de tu organización los consuman. Pub/Sub crea una autoridad central para los tipos de mensajes y los permisos. Para crear un tema con esquema, consulta Crea y administra esquemas.
Duración de la retención de mensajes. Especifica por cuánto tiempo el tema de Pub/Sub retiene mensajes después de la publicación. Una vez que finaliza la duración de retención de mensajes, Pub/Sub puede descartar el mensaje, independientemente de su estado de confirmación. Las tarifas de almacenamiento de mensajes se cobran por almacenar todos los mensajes publicados en el tema.
- Predeterminado = No habilitado
- Valor mínimo = 10 minutos
- Valor máximo = 31 días
Usa una clave de encriptación administrada por el cliente (CMEK). Especifica si el tema se encripta con una CMEK. Pub/Sub encripta los mensajes con claves administradas por Google de forma predeterminada. Si especificas esta opción, Pub/Sub usa el patrón de encriptación de sobre con CMEK. En este enfoque, Cloud KMS no encripta los mensajes. En su lugar, Cloud KMS encripta las claves de encriptación de datos (DEK) que Pub/Sub crea para cada tema. Pub/Sub encripta los mensajes mediante la DEK más reciente que se generó para el tema. Pub/Sub desencripta los mensajes poco antes de que se entreguen a los suscriptores. Para obtener más información sobre cómo crear una clave, consulta Configura la encriptación de mensajes.
Lineamientos para asignar nombres a temas, suscripciones o instantáneas
Un nombre de recurso de Pub/Sub identifica de forma única un recurso de Pub/Sub, como un tema, una suscripción o una instantánea. El nombre del recurso debe ajustarse al siguiente formato:
projects/project-identifier/collection/ID
project-identifier
: Debe ser el ID del proyecto, disponible en Google Cloud Console. Por ejemplo,my-cool-project
collection
: Debe sertopics
,subscriptions
osnapshots
.ID
: Debe cumplir con los siguientes lineamientos:- No debe comenzar con la string
goog
- Comenzar con una letra
- tener entre 3 y 255 caracteres
- Contiene solo los siguientes caracteres: letras
[A-Za-z]
, números[0-9]
, guiones-
, guiones bajos_
, puntos.
, virgulillas~
, signos más+
y signos de porcentaje.%
Puedes usar los caracteres especiales de la lista anterior en nombres de recursos sin codificación de URL. Sin embargo, debe asegurarse de que los demás caracteres especiales estén codificados o decodificados de forma correcta cuando los utilice en las URL. Por ejemplo,
mi-tópico
es un ID no válido. Sin embargo,mi-t%C3%B3pico
es válido. Este formato es importante cuando realizas llamadas REST.- No debe comenzar con la string
Cree un tema
Crea un tema antes de publicarlo o suscribirte a él.
Consola
Para crear un tema, sigue estos pasos:
En la consola de Google Cloud, ve a la página Temas de Pub/Sub.
Haga clic en Crear tema.
En el campo ID de tema, ingresa un ID para tu tema.
Mantén la opción Agregar una suscripción predeterminada.
No selecciones las otras opciones.
Haga clic en Crear tema.
gcloud CLI
Para crear un tema, ejecuta el comando gcloud pubsub topics create
:
gcloud pubsub topics create TOPIC_ID
REST
Para crear un tema, usa el método projects.topics.create
:
La solicitud debe autenticarse con un token de acceso en el encabezado Authorization
. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Aquí:
Respuesta:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID" }
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub C++.
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub C#.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Java.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Node.js.
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub PHP.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Ruby.
Limitaciones de las políticas de la organización
Las políticas de la organización pueden restringir la creación de temas, por ejemplo, una política puede restringir el almacenamiento de mensajes en una región de Compute Engine. Para evitar errores de creación de tema, examina y actualiza las políticas de la organización, según sea necesario, antes de crear un tema.
Si acabas de crear tu proyecto, espera unos minutos hasta que se inicialice la política de la organización antes de crear un tema.
Ir a Políticas de la organización
Crea un tema con un esquema
Cuando crees un tema, te recomendamos que le asignes un esquema.
A continuación, se incluyen algunos lineamientos sobre el uso de esquemas:
- No puedes agregar esquemas a temas existentes.
- Solo puedes especificar un esquema cuando creas un tema.
- Después de que un esquema se asocia con un tema, no puedes actualizar el esquema ni quitar su asociación con ese tema.
- Puedes aplicar el mismo esquema a otros temas nuevos.
- Si borras un esquema, la publicación en todos los temas asociados fallará.
Para obtener más información sobre los esquemas, consulta Crea y administra esquemas.
Consola
Para crear un tema y asignarle un esquema, sigue estos pasos:
En Google Cloud Console, ve a la página Temas de Pub/Sub.
Haga clic en Crear tema.
En el campo ID de tema, ingresa un ID para tu tema.
Marca la casilla Usar un esquema. Deja las otras opciones de configuración con sus valores predeterminados.
Haz clic en Seleccionar un esquema de Pub/Sub y selecciona Crear un esquema nuevo. Si deseas usar un esquema existente, ve al paso 7.
En el campo ID de esquema, ingresa un ID para tu esquema.
En Tipo de esquema, selecciona Avro o búfer de protocolo.
En el campo Definición del esquema, ingresa la definición del búfer de protocolo de Avro para tu esquema.
Haz clic en Crear para guardar el esquema.
En la ventana de diálogo Crear un tema, busque su esquema en el campo Select a Pub/Sub schema.
Haz clic en Crear para guardar el tema y asignarlo con el esquema seleccionado.
gcloud
Para crear un tema asignado con un esquema creado con anterioridad, ejecuta el comando gcloud pubsub topics create
:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID
Aquí:
- TOPIC_ID es el ID del tema que estás creando.
- ENCODING_TYPE es la codificación de los mensajes que se validan en el esquema. Este valor se debe configurar como
JSON
oBINARY
. - SCHEMA_ID es el ID de un esquema existente.
También puedes asignar un esquema desde otro proyecto de Google Cloud:
gcloud pubsub topics create TOPIC_ID \ --message-encoding=ENCODING_TYPE \ --schema=SCHEMA_ID \ --schema-project=SCHEMA_PROJECT \ --project=TOPIC_PROJECT
Aquí:
- SCHEMA_PROJECT es el ID del proyecto de Google Cloud para el esquema.
- TOPIC_PROJECT es el ID del proyecto de Google Cloud para el tema.
REST
Para crear un tema, usa el método projects.topics.create
:
Solicitud:
La solicitud debe autenticarse con un token de acceso en el encabezado Authorization
. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token
.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Cuerpo de la solicitud:
{ "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
Aquí:
- PROJECT_ID es el ID del proyecto.
- TOPIC_ID es tu ID del tema.
- SCHEMA_NAME es el nombre del esquema con el que se deben validar los mensajes publicados. El formato es:
projects/PROJECT_ID/schemas/SCHEMA_ID
. - ENCODING_TYPE es la codificación de los mensajes que se validan en el esquema. Se debe configurar como
JSON
oBINARY
.
Respuesta:
{ "name": "projects/PROJECT_ID/topics/TOPIC_ID", "schemaSettings": { "schema": "SCHEMA_NAME", "encoding": "ENCODING_TYPE" } }
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++.
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#.
Comienza a usarlo
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.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js 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 Node.js.
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP 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 PHP.
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.
Borrar un tema
Cuando borras un tema, no se borran sus suscripciones. El trabajo pendiente de mensajes de la suscripción está disponible para los suscriptores. Después de borrar un tema, sus suscripciones tienen el nombre del tema _deleted-topic_
. Si intentas crear un tema con el mismo nombre que acabas de borrar, es probable que aparezca un error durante un período breve.
Consola
En la consola de Google Cloud, ve a la página Temas de Pub/Sub.
Selecciona un tema y haz clic en
Más acciones.Haz clic en Borrar.
Aparecerá la ventana Borrar tema.
Ingresa
delete
y, luego, haz clic en Borrar.
gcloud CLI
Para borrar un tema, usa el comando gcloud pubsub topics delete
:
gcloud pubsub topics delete TOPIC_ID
REST
Para borrar un tema, usa el método projects.topics.delete
:
Solicitud:
La solicitud debe autenticarse con un token de acceso en el encabezado Authorization
. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token
.
DELETE https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID Authorization: Bearer ACCESS_TOKEN
Aquí:
Respuesta:
Si la solicitud es correcta, la respuesta es un objeto JSON vacío.
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub C++.
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub C#.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Java.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Node.js.
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub PHP.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Ruby.
Enumerar un tema
Consola
En la consola de Google Cloud, ve a la página Temas de Pub/Sub.
En la página Temas, se enumeran todos los temas disponibles.
gcloud CLI
Para enumerar los temas, usa el comando gcloud pubsub topics list
:
gcloud pubsub topics list
REST
Para enumerar temas, usa el método projects.topics.list
:
Solicitud:
La solicitud debe autenticarse con un token de acceso en el encabezado Authorization
. A fin de obtener un token de acceso para las credenciales predeterminadas actuales de la aplicación, usa el siguiente comando: gcloud auth application-default print-access-token
.
GET https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics Authorization: Bearer ACCESS_TOKEN
Aquí:
Respuesta:
{ "topics": [ { "name": "projects/PROJECT_ID/topics/mytopic1", ... }, { "name": "projects/PROJECT_ID/topics/mytopic2", ... } ] }
C++
Antes de probar esta muestra, sigue las instrucciones de configuración de C++ en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub C++.
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub C#.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Go.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Java.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Node.js.
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub PHP.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Python.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby en la guía de inicio rápido de Pub/Sub con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub Ruby.
De forma predeterminada, se muestra un máximo de 100 resultados por consulta. Puedes especificar un valor alternativo de hasta 1,000 con el parámetro de tamaño de página.
Supervisar temas
Puedes supervisar los temas desde Pub/Sub.
¿Qué sigue?
Elige el tipo de suscripción para tu tema.
Crea una suscripción para tu tema.
Crea o modifica un tema con gcloud CLI.
Crea o modifica un tema con las API de REST.