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
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é.
Dans le résultat, recherchez le champ
httpTarget
et vérifiez siuriOverride
a été défini.Si la sortie inclut une ligne pour
uriOverride
avec unhost
spécifié, votre file d'attente dispose d'un routage au niveau de la file d'attente. Pour choisir votre méthode de création de tâches, consultez la section Files d'attente avec routage au niveau de la file d'attente.Si la sortie n'inclut pas de ligne pour
uriOverride
ou si la description deuriOverride
n'affiche pas dehost
spécifié, votre file d'attente ne dispose pas de routage au niveau de la file d'attente. Pour choisir votre méthode de création de tâches, consultez la section Files d'attente sans routage au niveau de la file d'attente (ou configurez le routage au niveau de la file d'attente).
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éthodeBufferTask
. - 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âchesBufferTask
), mais respecte le routage des tâches qui comportent leurs propres spécifications de routage. Utilisez ensuiteCreateTask
. 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éthodeCreateTask
.
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.