Configurar colas de Cloud Tasks

Puede configurar su cola de Cloud Tasks al crearla o en cualquier momento después. La configuración se aplica a todas las tareas de esa cola.

Hay tres aspectos básicos en la configuración de colas:

Configurar el enrutamiento a nivel de cola

Si configura el enrutamiento a nivel de cola, se anula el enrutamiento definido a nivel de tarea. Esto resulta útil si quieres usar Cloud Tasks como búfer delante de tu servicio de destino o si necesitas cambiar el enrutamiento de todas las tareas de una cola.

El enrutamiento a nivel de cola se aplica a lo siguiente:

  • Tareas que están en la cola
  • Tareas que se añaden a la cola después de que se haya configurado el enrutamiento a nivel de cola

Limitaciones

El enrutamiento a nivel de cola no es compatible con las claves de encriptado gestionadas por el cliente (CMEK) de Cloud Key Management Service (Cloud KMS). Si CMEK está habilitada, no puedes hacer lo siguiente:

  • Crear tareas en una cola que tenga un enrutamiento a nivel de cola
  • Aplicar enrutamiento a nivel de cola

Configurar el enrutamiento a nivel de cola para tareas HTTP

Puedes configurar una cola para anular el enrutamiento a nivel de tarea al crearla o actualizarla. Para configurar el enrutamiento a nivel de cola, asigna al parámetro uriOverride de la cola la ruta que prefieras.

Si vas a aplicar el enrutamiento a nivel de cola como una actualización de una cola, pausa la cola antes de aplicar los cambios y espera un minuto después de aplicar los cambios para reanudar la cola.

  1. Pausar la cola Ejecuta el siguiente comando:

      gcloud tasks queues pause QUEUE_ID
      

    Sustituye QUEUE_ID por el ID de tu cola.

  2. Actualizar o eliminar el enrutamiento a nivel de cola.

    • Para actualizar el enrutamiento a nivel de cola, asigna el parámetro uriOverride a la ruta actualizada.

    • Para quitar el enrutamiento a nivel de cola mediante la API REST o la API RPC, sigue estos pasos:

      • API REST: envía una solicitud patch a la cola con una carga útil vacía y el parámetro updateMask definido como httpTarget.

      • API RPC: envía un updateQueueRequest para la cola con una carga útil vacía y el parámetro update_mask definido como http_target.

    En el siguiente ejemplo se usa la API REST para actualizar el host al que se dirigen las tareas:

    curl -X PATCH -d @- -i \
      -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID?updateMask=httpTarget.uriOverride" << EOF
    {
      "httpTarget": {"uriOverride":{"host":"NEW_HOST"}}
    }
    EOF
    

    Haz los cambios siguientes:

    • ACCESS_TOKEN: tu token de acceso. Para obtenerlo, ejecuta lo siguiente en tu terminal:

      gcloud auth application-default login
      gcloud auth application-default print-access-token
    • PROJECT_ID: el ID de tu proyecto de Google Cloud . Para obtenerlo, ejecuta lo siguiente en tu terminal:

      gcloud config get-value project

    • LOCATION: la ubicación de tu cola.

    • NEW_HOST: el nuevo host al que quieres que se dirija tu cola.

  3. Espera un minuto.

    La nueva configuración puede tardar hasta un minuto en aplicarse. Esperar a que se reanude la cola ayuda a evitar que las tareas se envíen con la configuración antigua.

  4. Para reanudar la cola, ejecuta el siguiente comando:

    gcloud tasks queues resume QUEUE_ID

Configurar el enrutamiento a nivel de cola para las tareas de App Engine

Para configurar el enrutamiento a nivel de cola de las tareas de App Engine, asigna al parámetro appEngineRoutingOverride de la cola el servicio y la versión de App Engine que prefieras.

  1. Configura el enrutamiento a nivel de cola y anula el enrutamiento a nivel de tarea:

    gcloud tasks queues update QUEUE_ID \
        --routing-override=service:SERVICE,version:VERSION

    Haz los cambios siguientes:

    • QUEUE_ID: el ID de la cola (su nombre abreviado).
    • SERVICE: el servicio de trabajador de App Engine responsable de gestionar las tareas.
    • VERSION: la versión de la aplicación.

    Por ejemplo, si configura un servicio de trabajador para gestionar todas las tareas de una cola, puede enrutar a ese servicio y a la versión predeterminada:

    gcloud tasks queues update QUEUE_ID \
        --routing-override=service:SERVICE
  2. Para verificar que la cola se ha configurado correctamente, ejecuta el siguiente comando:

    gcloud tasks queues describe QUEUE_ID --location=LOCATION

    Sustituye LOCATION por la ubicación de la cola.

    La salida debería ser similar a la siguiente:

    appEngineRoutingOverride:
      host: SERVICE.PROJECT_ID.appspot.com
      service: SERVICE
    name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING
  3. Para quitar el enrutamiento a nivel de cola, ejecuta el siguiente comando:

    gcloud tasks queues update QUEUE_ID \
        --clear-routing-override

    Cuando se elimina el enrutamiento a nivel de cola, se aplica el enrutamiento a nivel de tarea a las tareas de la cola y a las tareas que se añadan a la cola en el futuro.

Definir límites de frecuencia

El límite de frecuencia determina la frecuencia máxima con la que una cola puede distribuir tareas, independientemente de si la distribución es el primer intento de una tarea o un reintento.

  1. Para definir la frecuencia máxima y el número de tareas simultáneas que puede distribuir una cola, ejecuta el siguiente comando:

    gcloud tasks queues update QUEUE_ID \
        --max-dispatches-per-second=DISPATCH_RATE \
        --max-concurrent-dispatches=MAX_CONCURRENT_DISPATCHES

    Haz los cambios siguientes:

    • QUEUE_ID: el ID de la cola (su nombre abreviado).
    • DISPATCH_RATE: la frecuencia de distribución. Es la frecuencia con la que se actualizan los tokens del contenedor. En las condiciones en las que hay un flujo de tareas relativamente constante, este valor es el equivalente a la frecuencia con la que se distribuyen las tareas.
    • MAX_CONCURRENT_DISPATCHES: número máximo de tareas de la cola que se pueden ejecutar a la vez.

    Por ejemplo, si has creado una cola sin definir ningún parámetro, puedes actualizar el número máximo de tareas simultáneas ejecutando el siguiente comando:

    gcloud tasks queues update QUEUE_ID \
        --max-concurrent-dispatches=MAX_CONCURRENT_DISPATCHES
  2. Para verificar que la cola se ha configurado correctamente, ejecuta el siguiente comando:

    gcloud tasks queues describe QUEUE_ID --location=LOCATION

    Sustituye LOCATION por la ubicación de la cola.

    La salida debería ser similar a la siguiente:

    name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: