Migrar colas para tareas extraídas a Pub/Sub (Java)

En esta página se explica cómo migrar código de colas para tareas extraídas de Colas de tareas a Pub/Sub. Pub/Sub es ahora el servicio preferido para trabajar con colas para tareas extraídas en App Engine.

Si tu aplicación usa colas para tareas extraídas y colas para tareas insertadas, consulta esta guía para migrar tus colas para tareas extraídas a Pub/Sub antes de migrar tus colas para tareas insertadas al nuevo servicio de colas para tareas insertadas Cloud Tasks. No se recomienda migrar las colas de extracción después de migrar las colas de salida a Cloud Tasks, ya que es probable que el uso obligatorio del archivo queue.yaml provoque un comportamiento inesperado en Cloud Tasks.

Funciones que no están disponibles actualmente en Pub/Sub

Las siguientes funciones de colas de tareas no están disponibles en Pub/Sub:

  • Procesamiento por lotes por etiqueta
  • Deduplicación automática

Precios y cuotas

Migrar tus colas para tareas extraídas a Pub/Sub puede afectar a los precios y las cuotas de tu aplicación.

Precios

Pub/Sub tiene sus propios precios. Al igual que con las colas de tareas, enviar solicitudes a tu aplicación de App Engine con Pub/Sub puede generar costes para tu aplicación.

Cuotas

Las cuotas de Pub/Sub son diferentes de las cuotas de Colas de tareas. Al igual que con Colas de tareas, enviar solicitudes a tu aplicación de App Engine desde Pub/Sub puede afectar a tus cuotas de solicitudes de App Engine.

Antes de la migración

En las siguientes secciones se describen los pasos de configuración que debes seguir antes de migrar tus colas de extracción a Pub/Sub.

Habilitar la API Pub/Sub

Para habilitar la API Pub/Sub, haz clic en Habilitar en la API Pub/Sub de la biblioteca de APIs. Si ves el botón Gestionar en lugar del botón Habilitar, significa que ya has habilitado la API Pub/Sub en tu proyecto y no tienes que volver a hacerlo.

Autenticar tu aplicación en la API Pub/Sub

Debes autenticar tu aplicación en la API Pub/Sub. En esta sección se explica la autenticación en dos casos prácticos diferentes.

Para desarrollar o probar tu aplicación de forma local, te recomendamos que uses una cuenta de servicio. Para obtener instrucciones sobre cómo configurar una cuenta de servicio y conectarla a tu aplicación, consulta Obtener y proporcionar credenciales de cuenta de servicio manualmente.

Para implementar tu aplicación en App Engine, no tienes que proporcionar ninguna autenticación nueva. Las credenciales de aplicación predeterminadas (ADC) infieren los detalles de autenticación de las aplicaciones de App Engine.

Descargar Google Cloud CLI

Descarga e instala la CLI de Google Cloud para usar la CLI de gcloud con la API Pub/Sub si no la has instalado antes. Ejecuta el siguiente comando desde tu terminal si ya tienes instalada la CLI de Google Cloud.

gcloud components update

Importar las bibliotecas de cliente de Cloud

Sigue las instrucciones de Pub/Sub para instalar la biblioteca de cliente y usarla con tu aplicación.

Pub/Sub y colas para tareas extraídas

Comparación de funciones

Pub/Sub envía el trabajo a los trabajadores a través de una relación de editor/suscriptor. Una suscripción de extracción en Pub/Sub es como una cola de extracción en Colas de tareas porque el suscriptor extrae el mensaje del tema. En la siguiente tabla se muestra la función principal de las colas para tareas extraídas de Colas de tareas y la función asociada de las suscripciones extraídas de Pub/Sub.

Función Colas de tareas Función Pub/Sub
Cola Tema
Tarea Mensaje
Trabajador Suscriptor

Para obtener más información sobre la arquitectura de Pub/Sub, consulta Cloud Pub/Sub: A Google-Scale Messaging Service (Cloud Pub/Sub: un servicio de mensajería a escala de Google).

Comparación de flujos de trabajo

A continuación, se compara un flujo de trabajo típico de una cola para tareas extraídas en Task Queues con una suscripción de extracción en Pub/Sub.

Flujo de trabajo de colas de tareas Flujo de trabajo de Pub/Sub
Creas la cola para tareas extraídas Creas el tema y suscribes a tu suscriptor (es decir, el trabajador) al tema.
Creas y pones en cola la tarea Creas el mensaje y lo publicas en el tema
El trabajador alquila la tarea El suscriptor extrae el mensaje del tema
El trabajador procesa la tarea El suscriptor procesa el mensaje
El trabajador elimina la tarea de la cola El suscriptor confirma el mensaje
El contrato de alquiler vence El tema elimina el mensaje cuando todos sus suscriptores lo han confirmado.

Crear suscripciones de extracción en Pub/Sub

Puedes usar una suscripción de extracción de Pub/Sub como una cola de extracción de colas de tareas. Las suscripciones a un tema no caducan y pueden existir simultáneamente para varios trabajadores. Esto significa que un mensaje puede procesarse por más de un trabajador, que es uno de los principales casos prácticos de Pub/Sub. Para volver a crear tus colas de extracción de Task Queues como suscripciones de extracción de Pub/Sub, crea un tema para cada trabajador y suscribe solo el trabajador asociado al tema. De esta forma, se garantiza que cada mensaje se procese exactamente por un trabajador, como en las colas de tareas. Para obtener información sobre cómo crear y gestionar suscripciones de extracción, consulta el artículo sobre gestionar temas y suscripciones.

Eliminar colas de extracción

Después de migrar tus colas para tareas extraídas de Colas de tareas a suscripciones extraídas de Pub/Sub, elimínalas de Colas de tareas con tu archivo queue.yaml. Te recomendamos que elimines cada cola de extracción antes de migrar la siguiente. De esta forma, tu aplicación no duplicará el trabajo que recibe de la nueva suscripción de extracción de Pub/Sub mientras migras tus otras colas de extracción. Ten en cuenta que, si eliminas las colas de extracción de Task Queues una a una en lugar de hacerlo en una sola implementación, puede que afecte más a tu cuota de implementación de App Engine.

Después de eliminar todas las colas de extracción de Task Queues, puedes omitir el archivo queue.yaml en futuras implementaciones de tu aplicación.

Si tu aplicación solo usa colas de extracción, elimina cualquier referencia a la API Task Queues de tu código. Si tu aplicación usa colas de extracción y de inserción, puedes quitar las referencias a la API Task Queues que aparecen en los archivos que solo usan colas de extracción o esperar hasta que hayas migrado las colas de inserción y, a continuación, quitar las referencias a la API Task Queues de todos los archivos.

Siguientes pasos