Elige el método de creación de tareas

Puedes crear tareas HTTP con el método BufferTask o con el método CreateTask. En esta página se explica cómo elegir entre los dos métodos para crear tareas HTTP.

El método BufferTask te permite crear una tarea enviando una solicitud HTTP a la cola. El método CreateTask te permite crear una tarea construyendo el objeto task. En la mayoría de los casos, no es necesario crear el objeto de tarea de forma explícita. El mejor método para crear tareas depende de si la cola tiene enrutamiento a nivel de cola.

Antes de empezar

Consulta la siguiente lista de casos prácticos para ver si alguno se aplica a tu caso:

  • Quieres crear tareas con la API RPC o las bibliotecas de cliente (en lugar de con la API REST)
  • Quieres crear tareas como objetos tarea de App Engine (en lugar de como objetos de tarea más habituales para destinos HTTP genéricos que pueden ser o no destinos de App Engine).

Si se da alguna de estas circunstancias, no tienes que elegir el método de creación de tareas, ya que solo se admite uno (el método CreateTask). Ve directamente a la CreateTaskdocumentación de tu tipo de tarea:

Comprobar si tu cola tiene enrutamiento a nivel de cola

  1. Ejecuta el comando gcloud tasks queues describe en tu terminal:

    gcloud tasks queues describe QUEUE_NAME \
        --location=LOCATION

    Haz los cambios siguientes:

    • QUEUE_NAME: el nombre de la cola.
    • LOCATION: la región en la que se encuentra tu cola. Si no se especifica y hay una aplicación asociada, se usa la ubicación de la aplicación App Engine de tu proyecto.
  2. En el resultado, busca el campo httpTarget y comprueba si se ha definido uriOverride.

Colas con enrutamiento a nivel de cola

En las colas con enrutamiento a nivel de cola, el método de creación de tareas depende de los requisitos de enrutamiento de la tarea:

  • La tarea tiene los mismos requisitos de enrutamiento que los especificados a nivel de cola: usa BufferTask. Consulta cómo crear tareas con el método BufferTask.
  • La tarea tiene requisitos de enrutamiento diferentes a los especificados en el nivel de la cola: define el valor IF_NOT_EXISTS de UriOverrideEnforceMode de la cola para asegurarte de que el enrutamiento a nivel de cola se aplique a las tareas para las que no exista enrutamiento (por ejemplo, las tareas BufferTask), pero respeta el enrutamiento de las tareas que tengan sus propias especificaciones de enrutamiento. A continuación, usa CreateTask. Este método te permite especificar el enrutamiento individual de la tarea. Consulta cómo crear tareas con el método CreateTask.

Colas sin enrutamiento a nivel de cola

En las colas sin enrutamiento a nivel de cola, crea tareas con el método CreateTask (o configura el enrutamiento a nivel de cola). El método CreateTask incluye la especificación de la ruta de la tarea, que es obligatoria para las colas que aún no tienen información de ruta a nivel de cola. Consulta cómo crear tareas con el método CreateTask.

Información sobre el enrutamiento a nivel de cola

El enrutamiento a nivel de cola te permite especificar información de enrutamiento predeterminada para las tareas en función de la cola en la que se encuentren. Puedes especificar si quieres que el enrutamiento predeterminado se aplique solo a las tareas que no tengan su propia información de enrutamiento o a todas las tareas.

Elige el enrutamiento a nivel de cola si quieres:

  • Crea tareas con solicitudes HTTP estándar (en lugar de crear el objeto task)
  • Usar una cola como búfer delante de un servicio de destino

Estrategia por objetivo

El enrutamiento a nivel de cola funciona mejor con arquitecturas que usan una cola para cada servicio de destino. Este modelo te permite:

  • Gestionar tareas en función de su destino (por ejemplo, redirigir un grupo de tareas si el servicio de destino no funciona)
  • Enviar todas las tareas de una cola al mismo destino
  • Crea tareas sin construir explícitamente el objeto de tarea mediante el método BufferTask.

Activar y desactivar el comportamiento de anulación a nivel de cola

Una vez que hayas configurado el enrutamiento a nivel de cola, puedes decidir cuándo se aplica configurando el valor de UriOverrideEnforceMode de la cola.

  • IF_NOT_EXISTS: El enrutamiento a nivel de cola solo se aplica cuando una tarea no contiene su propia información de enrutamiento. Usa este ajuste si quieres que la cola pueda enviar tareas a diferentes destinos.
  • ALWAYS: El enrutamiento a nivel de cola siempre se aplica, aunque una tarea contenga su propia información de enrutamiento. La información de enrutamiento definida a nivel de tarea se anula con el enrutamiento a nivel de cola. Usa este ajuste si quieres que las tareas de una cola determinada usen la misma información de enrutamiento.