Choisir votre 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 pour créer des tâches HTTP.

La méthode BufferTask vous permet de créer une tâche en envoyant une requête HTTP au 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 pour créer des tâches varie selon que votre file d'attente 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 CLI suivante dans votre terminal :

    gcloud tasks queues describe QUEUE_NAME

    Remplacez QUEUE_NAME par le nom de votre file d'attente.

  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. Ensuite, utilisez CreateTask Cette méthode vous permet de spécifier un routage individuel pour la tâche. Découvrez comment créer des tâches à l'aide du module 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 CreateTask. (ou configurer 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 de la file d'attente à laquelle ils se trouvent. Vous pouvez indiquer si vous souhaitez que le routage par défaut ne s'appliquent qu'aux tâches qui ne possèdent pas leurs propres informations de routage, ou à toutes 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 objectif (par exemple, rediriger un groupe de des tâches si le service cible est en panne)
  • 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 pour pouvoir répartir les tâches sur 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 exiger que les tâches d'une file d'attente donnée utilisent les mêmes informations de routage.