Es posible que los suscriptores no puedan gestionar los mensajes por varios motivos. Por ejemplo, puede haber problemas transitorios al recuperar los datos necesarios para procesar un mensaje. También puede que el mensaje tenga un formato que el suscriptor no espera.
En esta página se explica cómo gestionar estos errores de procesamiento mediante una política de reintento de suscripción o reenviando los mensajes no entregados a un tema de mensajes fallidos (también conocido como cola de mensajes fallidos).
Ten en cuenta que Dataflow no admite estas funciones. Para obtener más información, consulta la sección Funciones de Pub/Sub no admitidas de la documentación de Dataflow.
Política de reintentos de suscripciones
Si Pub/Sub intenta enviar un mensaje, pero el suscriptor no puede confirmarlo, Pub/Sub intenta volver a enviar el mensaje automáticamente. Este intento de reenvío se conoce como política de reintentos de suscripción. No es una función que puedas activar o desactivar. Sin embargo, puedes elegir el tipo de política de reintentos que quieras usar.
Cuando crees y configures tu suscripción por primera vez, puedes elegir una de las siguientes políticas de reintento: reenvío inmediato o retroceso exponencial. De forma predeterminada, las suscripciones usan la retransmisión inmediata.
Reenvío inmediato
De forma predeterminada, Pub/Sub intenta reenviar el mensaje inmediatamente (y, posiblemente, al mismo cliente suscriptor). Sin embargo, si no han cambiado las condiciones que han impedido que se confirme la recepción del mensaje, la retransmisión inmediata puede provocar problemas. En este caso, es posible que Pub/Sub vuelva a enviar varios mensajes que no se puedan confirmar.
Para solucionar los problemas de reenvío inmediato, Pub/Sub te permite configurar una política de retirada exponencial.
Tiempo de espera exponencial
El tiempo de espera exponencial te permite añadir retrasos cada vez más largos entre los intentos. Después del primer error de entrega, Pub/Sub espera un tiempo de espera mínimo antes de volver a intentarlo. Por cada fallo consecutivo de un mensaje, se añade más tiempo al retraso, hasta un retraso máximo (0 y 600 segundos).
Los intervalos de retraso máximo y mínimo no son fijos y deben configurarse en función de los factores locales de tu aplicación.
Ten en cuenta las siguientes consideraciones sobre el tiempo de espera exponencial:
- El tiempo de espera exponencial se activa en las siguientes acciones:
- Cuando se recibe una confirmación negativa.
- Cuando vence el plazo de confirmación de un mensaje.
- El retroceso exponencial solo se aplica por mensaje, en lugar de a todos los mensajes de una suscripción (global).
- Mientras se usa la retirada exponencial, Pub/Sub sigue enviando otros mensajes, aunque los mensajes anteriores hayan recibido confirmaciones negativas (a menos que uses el envío de mensajes ordenado).
Usa la política de reintentos para retrasar el envío y el procesamiento de un subconjunto de mensajes y así hacer frente a la imposibilidad transitoria de procesar algunos mensajes al enviarse. La función se aplica de la mejor forma posible y cada mensaje se evalúa por separado según la política de reintentos.
No recomendamos usar esta función para introducir retrasos intencionados en la entrega de mensajes. Si envías una confirmación negativa (nack) de un gran número de mensajes en una suscripción configurada con una política de reintentos, es posible que algunos de esos mensajes se entreguen con un tiempo de espera menor o sin él. Pub/Sub también puede ralentizar la entrega de todos los mensajes si envías un gran número de respuestas negativas.
Si necesitas programar entregas, te recomendamos que uses Cloud Tasks.
Configurar el tiempo de espera exponencial
Consola
Cuando crees una suscripción, puedes configurar una política de reintentos con retroceso exponencial siguiendo estos pasos:
En la Google Cloud consola, ve a la página Suscripciones de Pub/Sub.
Haz clic en Crear suscripción.
En el campo ID de suscripción, introduce un nombre.
Para obtener información sobre cómo asignar un nombre a una suscripción, consulta las directrices para asignar un nombre a un tema o a una suscripción.
Elige o crea un tema en el menú desplegable.
La suscripción recibe mensajes del tema.
Seleccione un Tipo de publicación.
En Política de reintentos, seleccione Reintentar después de un tiempo de espera exponencial.
Introduce un Tiempo de espera mínimo y un Tiempo de espera máximo de entre 0 y 600 segundos.
Los valores predeterminados son 10 segundos para el tiempo de espera mínimo y 600 segundos para el tiempo de espera máximo.
Haz clic en Crear.
gcloud
Para crear una suscripción con una política de reintentos con retroceso exponencial, ejecuta el comando gcloud pubsub create
con las marcas que se muestran a continuación:
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --min-retry-delay=MIN_RETRY_DELAY \ --max-retry-delay=MAX_RETRY_DELAY
Tema de mensajes fallidos
Si el servicio Pub/Sub intenta entregar un mensaje, pero el suscriptor no puede confirmar la recepción, Pub/Sub puede reenviar el mensaje que no se ha podido entregar a un tema de mensajes fallidos.
Cómo funcionan los temas de mensajes fallidos con Pub/Sub
Un tema de mensajes fallidos es una propiedad de suscripción, no una propiedad de tema. Esto significa que debes definir un tema de mensajes fallidos cuando crees una suscripción, no cuando crees un tema.
Si creas un tema de mensajes fallidos, puedes definir las siguientes propiedades de suscripción:
Número máximo de intentos de entrega: valor numérico que indica el número de intentos de entrega que Pub/Sub realiza para un mensaje específico. Si el cliente de la suscripción no puede confirmar la recepción del mensaje en el número de intentos de entrega configurado, el mensaje se reenvía a un tema de mensajes fallidos.
- Valor predeterminado = 5
- Valor máximo = 100
- Valor mínimo = 5
Proyecto con el tema de mensajes fallidos: si el tema de mensajes fallidos está en un proyecto distinto de la suscripción, debes especificar el proyecto con el tema de mensajes fallidos. Asigna al tema de mensajes fallidos un tema distinto del tema al que está asociada la suscripción.
Cómo se calcula el número máximo de intentos de entrega
Pub/Sub solo contabiliza los intentos de entrega cuando un tema de mensajes fallidos está configurado correctamente e incluye los permisos de gestión de identidades y accesos correctos.
El número máximo de intentos de entrega es aproximado porque Pub/Sub reenvía los mensajes que no se pueden entregar en la medida de lo posible.
El número de intentos de entrega registrados de un mensaje también puede restablecerse a cero, sobre todo en el caso de una suscripción de extracción con suscriptores inactivos. Por lo tanto, es posible que los mensajes se entreguen al cliente suscriptor más veces que el número máximo de intentos de entrega configurado.
Configurar un tema de mensajes fallidos
Para configurar un tema de mensajes fallidos, el tema de origen debe tener primero una suscripción. Puedes especificar un tema de mensajes fallidos al crear la suscripción o actualizar una suscripción que ya tengas para que tenga un tema de mensajes fallidos.
A continuación, se muestra el flujo de trabajo para habilitar el envío de mensajes fallidos en una suscripción.
Crea el tema de mensajes fallidos. Este tema es independiente del tema de origen.
Define el tema de mensajes fallidos en la suscripción del tema de origen.
Para no perder los mensajes del tema de mensajes fallidos, vincula al menos otra suscripción al tema de mensajes fallidos. La suscripción secundaria recibe mensajes del tema de mensajes fallidos.
Asigna los roles de editor y suscriptor a la cuenta de servicio de Pub/Sub. Para obtener más información, consulta Conceder permisos de reenvío.
Definir un tema de mensajes fallidos en una suscripción nueva
Puedes crear una suscripción y definir un tema de mensajes fallidos mediante la consolaGoogle Cloud , la CLI de Google Cloud, las bibliotecas de cliente o la API Pub/Sub.
Consola
Para crear una suscripción y definir un tema de mensajes fallidos, sigue estos pasos:
En la Google Cloud consola, ve a la página Suscripciones.
Haz clic en Crear suscripción.
Introduce el ID de suscripción.
Elige o crea un tema en el menú desplegable.
La suscripción recibe mensajes del tema.
En la sección Mensajes fallidos, selecciona Habilitar mensajes fallidos.
Elige o crea un tema de mensajes fallidos en el menú desplegable.
Si el tema de mensajes fallidos elegido no tiene ninguna suscripción, el sistema te pedirá que crees una.
En el campo Número máximo de intentos de entrega, especifica un número entero entre 5 y 100.
Haz clic en Crear.
En el panel de detalles se muestra una lista de posibles tareas. Si alguno de los elementos muestra un icono de error
, haz clic en el elemento de acción para resolver el problema.
gcloud
Para crear una suscripción y definir un tema de mensajes fallidos, usa el comando
gcloud pubsub subscriptions create
gcloud pubsub subscriptions create subscription-id \ --topic=topic-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido de Pub/Sub con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Ruby Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Definir un tema de mensajes fallidos para una suscripción
Puedes actualizar una suscripción y definir un tema de mensajes fallidos mediante laGoogle Cloud consola, la CLI de Google Cloud, las bibliotecas de cliente o la API de Pub/Sub.
Consola
Para actualizar una suscripción y definir un tema de mensajes fallidos, sigue estos pasos.
En la Google Cloud consola, ve a la página Suscripciones.
Junto a la suscripción que quieras actualizar, haz clic en Más accionesmore_vert.
En el menú contextual, selecciona Editar.
En la sección Mensajes fallidos, selecciona Habilitar mensajes fallidos.
Elige o crea un tema en el menú desplegable.
Si el tema elegido no tiene ninguna suscripción, el sistema te pedirá que crees una.
En el campo Número máximo de intentos de entrega, especifica un número entero entre 5 y 100.
Haz clic en Actualizar.
En el panel de detalles se muestra una lista de posibles tareas. Si alguno de los elementos muestra un icono de error
, haz clic en el elemento de acción para resolver el problema.
gcloud
Para actualizar una suscripción y definir un tema de mensajes fallidos, usa el comando
gcloud pubsub subscriptions update
:
gcloud pubsub subscriptions update subscription-id \ --dead-letter-topic=dead-letter-topic-name \ [--max-delivery-attempts=max-delivery-attempts] \ [--dead-letter-topic-project=dead-letter-topic-project]
C++
Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido de Pub/Sub con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Ruby Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Conceder roles de gestión de identidades y accesos para usar temas de mensajes fallidos
Para reenviar mensajes que no se pueden entregar a un tema de mensajes fallidos, Pub/Sub debe tener permiso para hacer lo siguiente:
- Publica mensajes en el tema.
- Confirma los mensajes para quitarlos de la suscripción.
Pub/Sub crea y mantiene una cuenta de servicio para cada proyecto:
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
.
Puedes conceder permisos de reenvío asignando los roles de editor y suscriptor a esta cuenta de servicio.
Consola
Para conceder permiso a Pub/Sub para publicar mensajes en un tema de mensajes fallidos, sigue estos pasos:
En la Google Cloud consola, ve a la página Suscripciones.
Haz clic en el nombre de la suscripción que tenga el tema de mensajes fallidos.
Haz clic en la pestaña Buzón de correos.
Para asignar un rol de editor, haz clic en Conceder rol de editor. Si el rol de editor se asigna correctamente, verás una marca de verificación azul
.Para asignar un rol de suscriptor, haz clic en Conceder rol de suscriptor. Si el rol de editor se asigna correctamente, verás una marca de verificación azul
.
gcloud
Para conceder permiso a Pub/Sub para publicar mensajes en un tema de mensajes fallidos, ejecuta el siguiente comando:
PUBSUB_SERVICE_ACCOUNT="service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud pubsub topics add-iam-policy-binding dead-letter-topic-name \ --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\ --role="roles/pubsub.publisher"
Para conceder permiso a Pub/Sub para confirmar los mensajes reenviados que no se han podido entregar, ejecuta el siguiente comando:
PUBSUB_SERVICE_ACCOUNT="service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud pubsub subscriptions add-iam-policy-binding subscription-id \ --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\ --role="roles/pubsub.subscriber"
Hacer un seguimiento de los intentos de entrega
Después de habilitar un tema de mensajes fallidos para una suscripción, cada mensaje de esa suscripción tiene un campo que especifica el número de intentos de entrega:
Los mensajes recibidos de una suscripción de extracción incluyen el campo
delivery_attempt
.Los mensajes recibidos de una suscripción push incluyen el campo
deliveryAttempt
.
En los siguientes ejemplos se muestra cómo obtener el número de intentos de entrega:
C++
Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Cuando Pub/Sub reenvía un mensaje que no se puede entregar a un tema de mensajes fallidos, añade los siguientes atributos al mensaje:
CloudPubSubDeadLetterSourceDeliveryCount
: número de intentos de entrega a la suscripción de origen.CloudPubSubDeadLetterSourceSubscription
: nombre de la suscripción de origen.CloudPubSubDeadLetterSourceSubscriptionProject
: nombre del proyecto que contiene la suscripción de origen.CloudPubSubDeadLetterSourceTopicPublishTime
: marca de tiempo en la que se publicó originalmente el mensaje.CloudPubSubDeadLetterSourceDeliveryErrorMessage
: el motivo por el que no se ha podido entregar el mensaje al destino original. El atributo solo se utiliza para exportar suscripciones.
Monitorizar mensajes reenviados
Después de reenviar un mensaje que no se puede entregar, el servicio Pub/Sub elimina el mensaje de la suscripción. Puedes monitorizar los mensajes reenviados con Cloud Monitoring.
Si asocias una suscripción al tema de mensajes fallidos, los mensajes usarán la política de vencimiento de la suscripción asociada en lugar del periodo de vencimiento de la suscripción con la propiedad del tema de mensajes fallidos.
La subscription/dead_letter_message_count
métrica
registra el número de mensajes que no se pueden entregar y que Pub/Sub
reenvía desde una suscripción.
Para obtener más información, consulta el artículo Monitorizar mensajes no entregados reenviados.
Eliminar un tema de mensajes fallidos
Para dejar de reenviar mensajes que no se pueden entregar, elimina el tema de mensajes fallidos de la suscripción.
Puedes quitar un tema de mensajes fallidos de una suscripción mediante laGoogle Cloud consola, la CLI de Google Cloud o la API Pub/Sub.
Consola
Para quitar un tema de mensajes fallidos de una suscripción, sigue estos pasos:
En la Google Cloud consola, ve a la página Suscripciones.
En la lista de suscripciones, haz clic en more_vert junto a la suscripción que quieras actualizar.
En el menú contextual, selecciona Editar.
En la sección Mensajes fallidos, desmarca Habilitar mensajes fallidos.
Haz clic en Actualizar.
gcloud
Para quitar un tema de mensajes fallidos de una suscripción, usa el comando
gcloud pubsub subscriptions update
y la marca --clear-dead-letter-policy
:
gcloud pubsub subscriptions update subscription-id \ --clear-dead-letter-policy
C++
Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de Pub/Sub.
Go
En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración de PHP que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Pub/Sub para PHP.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.
Ruby
En el siguiente ejemplo se usa la biblioteca de cliente de Ruby Pub/Sub v3. Si sigues usando la biblioteca v2, consulta la guía de migración a la versión 3. Para ver una lista de ejemplos de código de Ruby v2, consulta los ejemplos de código obsoletos.
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de Pub/Sub.
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración de Ruby que se indican en la guía de inicio rápido de Pub/Sub con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Ruby Pub/Sub.
Para autenticarte en Pub/Sub, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Precios
Cuando el servicio Pub/Sub reenvía mensajes que no se pueden entregar, se aplican las siguientes tarifas:
- Las tarifas de publicación se facturan a la cuenta de facturación asociada al proyecto que contiene el tema de mensajes fallidos.
- Las tarifas de suscripción de los mensajes salientes se facturan a la cuenta de facturación asociada al proyecto que contiene la suscripción con la propiedad de tema de mensajes fallidos.
Si defines la propiedad del tema de mensajes fallidos de una suscripción, pero la política de ubicación de almacenamiento de mensajes del tema de mensajes fallidos no permite la región que contiene la suscripción, también se aplicarán tarifas de publicación a los mensajes salientes.
Las tarifas de publicación de los mensajes salientes se facturan al proyecto que contiene el tema de mensajes fallidos. Para obtener más información, consulta los precios.
Siguientes pasos
- Recibir los mensajes reenviados que no se han podido entregar.
- Monitorizar aplicaciones de Pub/Sub.
- Consulta los conceptos de entrega de mensajes.