Para publicar un mensaje con Pub/Sub, una aplicación de editor crea y envía mensajes a un tema.
En este documento se ofrece una descripción general del flujo de trabajo de publicación, incluido el concepto de temas y mensajes.
Acerca de los temas
Un tema de Pub/Sub es un recurso con nombre que representa un feed de mensajes. Cuando un editor envía un mensaje, se dirige a un tema específico. El servicio Pub/Sub usa este nombre de tema para enrutar el mensaje a todas las suscripciones asociadas al tema. Si hay varios suscriptores de una suscripción, solo uno de ellos recibirá el mensaje.
Los editores no tienen que saber cuántos suscriptores hay. Se centran en el tema, lo que asegura la separación de las responsabilidades entre el envío y la recepción de mensajes.
Pub/Sub admite dos tipos de temas: temas estándar y temas de importación.
Propiedades de un tema
Cuando creas o actualizas un tema, puedes especificar sus propiedades.
Para obtener más información sobre las propiedades de los temas, consulta Propiedades de un tema.
Acerca de los temas de importación
Un tema de importación permite que Pub/Sub ingiera datos de streaming de otra fuente y actúe como la aplicación de publicación que envía los datos al tema. Puedes habilitar la ingestión en un tema mediante la consola, la CLI de Google Cloud, las llamadas REST o las bibliotecas de cliente. Como parte de la gestión del tema de importación,Google Cloud proporciona monitorización y escalado de la canalización de ingestión.
Si no se usa un tema de importación, para transmitir datos a Pub/Sub desde una fuente de datos, se necesita un servicio adicional. Este servicio adicional extrae datos de la fuente original y los publica en Pub/Sub. El servicio adicional puede ser un motor de streaming, como Apache Spark, o un servicio escrito de forma personalizada. También debes configurar, desplegar, ejecutar, escalar y monitorizar este servicio.
A continuación, se incluye una lista de información importante sobre temas de importación:
Al igual que con los temas estándar, puedes publicar manualmente en un tema de importación.
Solo puedes adjuntar una fuente de ingestión a un tema de importación.
Recomendamos importar temas para transmitir datos. Si estás pensando en ingerir datos por lotes en BigQuery en lugar de hacerlo por streaming, puedes probar BigQuery Data Transfer Service. Si quieres ingerir datos en Cloud Storage, Servicio de transferencia de Storage (STS) es una buena opción.
Pub/Sub admite las siguientes fuentes para importar temas:
Replicación de datos en un tema
Un tema de Pub/Sub usa tres zonas para almacenar datos. El servicio admite la replicación síncrona en al menos dos zonas y la replicación con el mejor esfuerzo posible en una tercera zona adicional. La replicación de Pub/Sub se realiza en una sola región.
Acerca de los mensajes
Un mensaje de Pub/Sub son los datos que se mueven a través del servicio.
Un mensaje consta de campos con los datos y los metadatos del mensaje. Se debe especificar uno de los siguientes elementos en un mensaje.
Los datos del mensaje: es el contenido principal del mensaje y puede ser cualquier texto o dato binario. Representa la información real que quieres comunicar entre editores y suscriptores. Si usas la API REST directamente, los datos del mensaje deben estar codificados con Base64. Consulta el ejemplo de la pestaña REST de la sección Publicar mensajes.
Clave de ordenación: es un identificador que representa la entidad para la que se deben ordenar los mensajes. Se espera que los mensajes con la misma clave de ordenación se entreguen a un suscriptor en el orden en el que se publicaron. Una clave de ordenación solo es necesaria si quieres que tus mensajes se entreguen en un orden específico. Para obtener más información sobre cómo pedir llaves, consulta Mensaje de pedido.
Atributos: son pares clave-valor opcionales que proporcionan contexto e información adicionales sobre el mensaje. Se pueden usar para enrutar, filtrar o enriquecer el contenido de los mensajes. Por ejemplo, puede añadir atributos como marcas de tiempo o IDs de transacción. Para obtener más información sobre los atributos que se usan al publicar mensajes, consulta el artículo Usar atributos para publicar un mensaje.
El servicio Pub/Sub añade los siguientes campos al mensaje:
- ID de mensaje único del tema.
- Marca de tiempo que indica cuándo recibe el mensaje el servicio Pub/Sub.
Por ejemplo, aquí tienes un formato de mensaje en JSON:
{
"data": "This is the core message content.",
"attributes": {
"category": "notification",
"user_id": "12345",
"priority": "medium"
},
"orderingKey": "12345"
}
Cuando publiques mensajes con las bibliotecas de cliente de Pub/Sub, proporciona el mensaje data
como una matriz de bytes, como un Buffer
de Node.js. Si tus datos son una cadena, primero debes codificarlos en bytes (por ejemplo, con la codificación UTF-8) antes de enviarlos a la biblioteca de cliente.
Si usas la API REST directamente, los datos del mensaje deben codificarse en base64 y enviarse como una cadena.
Flujo de trabajo de publicación de mensajes
Para publicar un mensaje con Pub/Sub, una aplicación de editor crea y envía mensajes a un tema.
- Crea un mensaje que contenga tus datos.
- Seleccione los atributos de publicación opcionales que quiera.
- Envía una solicitud al servidor de Pub/Sub para publicar el mensaje en un tema específico.
El servicio Pub/Sub recibe el mensaje y lo procesa de la siguiente manera:
El mensaje se almacena para su distribución.
El mensaje se replica en varias zonas para ofrecer durabilidad y alta disponibilidad.
Pub/Sub identifica a los suscriptores con suscripciones que coinciden con el tema del mensaje y envía una copia del mensaje a cada uno de ellos.
Pub/Sub ofrece la entrega de mensajes al menos una vez y el orden de mejor esfuerzo a los suscriptores actuales.
Para obtener más información sobre el sistema Pub/Sub, consulta la descripción general del servicio Pub/Sub.
Para obtener más información sobre cómo funciona Pub/Sub, consulta la descripción general de la arquitectura de Pub/Sub.