Choisir la méthode de création de tâches

Vous pouvez créer des tâches HTTP à l'aide de la méthode BufferTask ou de la méthode CreateTask. Cette page explique comment choisir entre les deux méthodes de création de tâches HTTP.

La méthode BufferTask vous permet de créer une tâche en envoyant une requête HTTP à la file d'attente. La méthode CreateTask vous permet de créer une tâche en construisant l'objet de tâche. Dans la plupart des cas, la création explicite de l'objet de tâche n'est pas nécessaire. La meilleure méthode de création de tâches dépend de la présence ou non d'un routage au niveau de la file d'attente.

Avant de commencer

Consultez la liste suivante des cas d'utilisation pour voir si l'un d'eux vous concerne:

  • Vous souhaitez créer des tâches à l'aide de l'API RPC ou des bibliothèques clientes (plutôt que de l'API REST)
  • Vous souhaitez créer des tâches en tant qu'objets tâche App Engine (plutôt qu'en tant qu'objets de tâche plus courants pour les cibles HTTP génériques, qui peuvent ou non être des cibles App Engine)

Si l'une de ces conditions s'applique à vous, vous n'avez pas besoin de choisir la méthode de création de tâches, car une seule méthode (la méthode CreateTask) est prise en charge. Accédez directement à la documentation CreateTask pour votre type de tâche:

Vérifier si votre file d'attente dispose d'un routage au niveau de la file d'attente

  1. Exécutez la commande gcloud tasks queues describe dans votre terminal:

    gcloud tasks queues describe QUEUE_NAME \
        --location=LOCATION

    Remplacez les éléments suivants :

    • QUEUE_NAME: nom de votre file d'attente.
    • LOCATION: région où se trouve votre file d'attente. Si cet emplacement n'est pas spécifié et qu'une application est associée, l'emplacement de l'application App Engine de votre projet est utilisé.
  2. Dans le résultat, recherchez le champ httpTarget et vérifiez si uriOverride a été défini.

Files d'attente avec routage au niveau de la file d'attente

Pour les files d'attente avec routage au niveau de la file d'attente, la méthode de création de la tâche dépend des exigences de routage de la tâche:

  • La tâche a les mêmes exigences de routage que celles spécifiées au niveau de la file d'attente: utilisez BufferTask. Découvrez comment créer des tâches avec la méthode BufferTask.
  • La tâche a des exigences de routage différentes de celles spécifiées au niveau de la file d'attente:définissez UriOverrideEnforceMode sur IF_NOT_EXISTS pour vous assurer que le routage au niveau de la file d'attente s'applique aux tâches pour lesquelles le routage n'existe pas (par exemple, les tâches BufferTask), mais respecte le routage des tâches qui comportent leurs propres spécifications de routage. Utilisez ensuite CreateTask. Cette méthode vous permet de spécifier un routage individuel pour la tâche. Découvrez comment créer des tâches avec la méthode CreateTask.

Files d'attente sans routage au niveau de la file d'attente

Pour les files d'attente sans routage au niveau de la file d'attente, créez des tâches à l'aide de la méthode CreateTask (ou configurez le routage au niveau de la file d'attente). La méthode CreateTask inclut la spécification du routage pour la tâche, qui est obligatoire pour les files d'attente qui ne disposent pas déjà d'informations de routage au niveau de la file d'attente. Découvrez comment créer des tâches avec la méthode CreateTask.

Comprendre le routage au niveau de la file d'attente

Le routage au niveau de la file d'attente vous permet de spécifier des informations de routage par défaut pour les tâches en fonction de la file d'attente dans laquelle elles se trouvent. Vous pouvez spécifier si le routage par défaut ne doit s'appliquer qu'aux tâches qui ne disposent pas de leurs propres informations de routage ou à toutes les tâches.

Choisissez le routage au niveau de la file d'attente si vous souhaitez:

  • Créer des tâches à l'aide de requêtes HTTP standards (plutôt que de créer l'objet de tâche)
  • Utiliser une file d'attente comme tampon devant un service cible

L'approche par cible

Le routage au niveau de la file d'attente fonctionne mieux avec les architectures qui utilisent une file d'attente pour chaque service cible. Ce modèle vous permet d'effectuer les opérations suivantes:

  • Gérer les tâches en fonction de leur cible (par exemple, rediriger un groupe de tâches si le service cible est indisponible)
  • Envoyer toutes les tâches d'une file d'attente à la même cible
  • Créer des tâches sans créer explicitement l'objet de tâche à l'aide de la méthode BufferTask

Activer et désactiver le comportement de remplacement au niveau de la file d'attente

Une fois que vous avez configuré le routage au niveau de la file d'attente, vous pouvez décider quand il sera appliqué en définissant le paramètre UriOverrideEnforceMode de la file d'attente.

  • IF_NOT_EXISTS: le routage au niveau de la file d'attente ne s'applique que lorsqu'une tâche ne contient pas ses propres informations de routage. Utilisez ce paramètre si vous souhaitez que la file d'attente puisse distribuer des tâches à différentes cibles.
  • ALWAYS: le routage au niveau de la file d'attente s'applique toujours, même si une tâche contient ses propres informations de routage. Toutes les informations de routage définies au niveau de la tâche sont remplacées par le routage au niveau de la file d'attente. Utilisez ce paramètre si vous souhaitez que les tâches d'une file d'attente donnée utilisent les mêmes informations de routage.