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

Vous pouvez créer des tâches HTTP à l'aide de la méthode BufferTask ou 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 d'utilisation, il n'est pas nécessaire de construire explicitement l'objet tâche. La meilleure méthode pour créer des tâches varie selon que votre file d'attente dispose d'un routage au niveau de la file d'attente.

Avant de commencer

Consultez la liste des cas d'utilisation ci-dessous pour déterminer si vous êtes concerné par l'un d'entre eux:

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

Si l'une d'entre elles s'applique à votre cas, vous n'avez pas besoin de choisir votre méthode de création de tâche, car une seule méthode (CreateTask) est acceptée. Accédez directement à la documentation CreateTask correspondant à 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 un routage au niveau de la file d'attente, la méthode de création de tâches dépend de ses exigences de routage:

  • 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 le paramètre UriOverrideEnforceMode de la file d'attente 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 utilisant 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 configure le routage au niveau de la file d'attente). La méthode CreateTask consiste à spécifier le routage de la tâche, qui est requis pour les files d'attente ne disposant pas encore 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 vous souhaitez que le routage par défaut s'applique uniquement 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 avec des 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

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 des 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 construire explicitement l'objet 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 à quel moment il est 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.