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.
Pausar la cola Ejecuta el siguiente comando:
gcloud tasks queues pause QUEUE_ID
Sustituye
QUEUE_IDpor el ID de tu cola.Actualizar o eliminar el enrutamiento a nivel de cola.
Para actualizar el enrutamiento a nivel de cola, asigna el parámetro
uriOverridea 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
patcha la cola con una carga útil vacía y el parámetroupdateMaskdefinido comohttpTarget.API RPC: envía un
updateQueueRequestpara la cola con una carga útil vacía y el parámetroupdate_maskdefinido comohttp_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"}} } EOFHaz 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.
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.
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.
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
Para verificar que la cola se ha configurado correctamente, ejecuta el siguiente comando:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Sustituye
LOCATIONpor 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
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.
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
Para verificar que la cola se ha configurado correctamente, ejecuta el siguiente comando:
gcloud tasks queues describe QUEUE_ID --location=LOCATION
Sustituye
LOCATIONpor 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: