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 CreateTask
documentación de tu tipo de tarea:
Comprobar si tu cola tiene enrutamiento a nivel de cola
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.
En el resultado, busca el campo
httpTarget
y comprueba si se ha definidouriOverride
.Si el resultado incluye una línea para
uriOverride
con unhost
especificado, tu cola tiene un enrutamiento a nivel de cola. Para elegir el método de creación de tareas, consulta la sección Colas con enrutamiento a nivel de cola.Si el resultado no incluye una línea para
uriOverride
o si la descripción deuriOverride
no muestra ningúnhost
especificado, tu cola no tendrá enrutamiento a nivel de cola. Para elegir el método de creación de tareas, consulta la sección Colas sin enrutamiento a nivel de cola (o configura el enrutamiento a nivel de cola).
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étodoBufferTask
. - 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 tareasBufferTask
), pero respeta el enrutamiento de las tareas que tengan sus propias especificaciones de enrutamiento. A continuación, usaCreateTask
. Este método te permite especificar el enrutamiento individual de la tarea. Consulta cómo crear tareas con el métodoCreateTask
.
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.