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.
Para gestionar los mensajes que no se pueden entregar y que los suscriptores no pueden confirmar, Pub/Sub puede reenviarlos a un tema de mensajes fallidos (también conocido como cola de mensajes fallidos).
Antes de empezar
Crea un tema para la configuración del tema de mensajes fallidos.
También puedes crear el tema en un paso posterior si sigues todas las instrucciones de esta página de principio a fin.
Roles obligatorios
Para obtener los permisos que necesitas para gestionar temas y suscripciones, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Pub/Sub (roles/pubsub.editor) en tu proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Puede configurar el control de acceso a nivel de proyecto y de recurso individual. Puedes crear una suscripción en un proyecto y adjuntarla a un tema ubicado en otro proyecto. Asegúrate de que tienes los permisos necesarios para cada proyecto.
Cómo funcionan los temas de mensajes fallidos
Cuando una aplicación de suscriptor no puede confirmar la recepción de un mensaje, Pub/Sub vuelve a intentar la entrega hasta que se cumple el plazo de confirmación o el mensaje caduca. Después de un número de intentos de entrega configurado aproximadamente, Pub/Sub puede reenviar el mensaje que no se ha podido entregar a un tema de mensajes fallidos.
Cuando Pub/Sub reenvía un mensaje que no se puede entregar, envuelve el mensaje original en uno nuevo y añade atributos que identifican la suscripción de origen. A continuación, el mensaje se envía al tema de mensajes fallidos especificado. Una suscripción independiente asociada al tema de mensajes fallidos puede recibir estos mensajes reenviados para analizarlos y depurarlos sin conexión.
Cómo se calculan los intentos de entrega máximos
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. Es posible que el servicio reenvíe un mensaje después de menos intentos de los configurados o que intente entregarlo algunas veces más antes de reenviarlo.
El número de intentos de entrega 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.
Propiedades del tema de mensajes fallidos
Puede definir las siguientes propiedades de suscripción en un tema de mensajes fallidos.
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 suscriptor 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 al de la suscripción, debes especificar el proyecto con el tema de mensajes fallidos. Define el tema de mensajes fallidos como un tema distinto del tema al que está asociada la suscripción.
Configurar un tema de mensajes fallidos
En los siguientes pasos se describe el flujo de trabajo para usar temas de mensajes fallidos.
Crea un tema (para usarlo como tema de mensajes fallidos).
Crea una suscripción para el tema de mensajes fallidos.
Habilita mensajes fallidos en tu suscripción.
Adjunta el tema que has creado anteriormente a tu suscripción.
Concede los roles necesarios a tu cuenta de servicio de Pub/Sub para usar temas de mensajes fallidos.
Crea un tema para usarlo con temas de mensajes fallidos
Si ya has creado un tema para usarlo en tu suscripción, puedes saltarte este paso.
En la Google Cloud consola, ve a la página Temas.
Haz clic en Crear tema.
Introduce un ID de tema, por ejemplo,
my-test-topic.Mantén la opción de suscripción predeterminada y haz clic en Crear.
Definir un tema de mensajes fallidos en una suscripción
Puedes definir un tema de mensajes fallidos en una suscripción nueva o en una que ya tengas.
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 el tema que quieras usar con tu suscripción. La suscripción recibe mensajes del tema. Este no es tu tema de mensajes fallidos. Lo elegirás en el siguiente paso.
En la sección Mensajes fallidos, selecciona Habilitar mensajes fallidos.
Elige 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.
Haz clic en el panel de detalles para identificar posibles elementos de acción. 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 Go Pub/Sub (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 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 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 PHP de Pub/Sub.
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 Pub/Sub de Ruby 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 Ruby instrucciones de configuración de 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 gcloud, las bibliotecas de cliente o la API 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 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 Actualizar.
Haz clic en el panel de detalles para identificar posibles elementos de acción. 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.