Bien que vous puissiez utiliser un queue.yaml
fichier pour gérer les files d'attente, le mélange des méthodes de gestion des files d'attente
peut entraîner des résultats inattendus. Ce guide explique les risques liés au mélange de ces méthodes et vous montre comment résoudre les problèmes de configuration courants.
L'API Cloud Tasks fournit une interface indépendante au service de file d'attente des tâches App Engine. À l'aide de cette interface, vous pouvez gérer les files d'attente via la Google Cloud console ou la Google Cloud CLI. Les files d'attente que vous créez avec l'API Cloud Tasks sont accessibles à partir du SDK App Engine (un ensemble d'API spécifiques à la plate-forme, d'outils autonomes et de fichiers d'exécution), et les files d'attente créées avec le SDK App Engine sont accessibles à partir de l' API Cloud Tasks.
Pour maintenir la compatibilité, vous pouvez utiliser queue.yaml, le fichier de configuration du SDK App Engine, afin de créer et de configurer des files d'attente pour l'API Cloud Tasks. Toutefois, la gestion des files d'attente à l'aide de ce fichier et de l'API Cloud Tasks peut entraîner des problèmes qui sont décrits dans ce guide.
Avant de commencer
Si vous débutez dans Cloud Tasks ou App Engine, utilisez l'API Cloud Tasks exclusivement pour gérer vos files d'attente et évitez d'utiliser queue.yaml. Les méthodes de gestion des files d'attente Cloud Tasks vous offrent plus d'options pour créer, mettre à jour et supprimer des files d'attente.
Si vous utilisez déjà queue.yaml, n'envisagez de passer aux
méthodes de gestion des files d'attente Cloud Tasks que si vous comprenez les
risques liés au mélange des méthodes de gestion des files d'attente.
Appliquer une méthode de gestion des files d'attente
Pour éviter de mélanger les méthodes de gestion des files d'attente, vous pouvez créer une application Web ou un outil de ligne de commande pour créer, mettre à jour et supprimer des files d'attente. Que cet outil utilise les méthodes de gestion des files d'attente Cloud Tasks ou queue.yaml est un détail de mise en œuvre dont les utilisateurs n'ont pas besoin d'être conscients. En appliquant l'utilisation de l'outil, vous pouvez vous assurer qu'il n'y a pas de mélange involontaire de méthodes.
Attribuez le rôle Cloud Tasks Queue Admin Identity and Access Management (IAM) à l'outil et demandez aux utilisateurs de s'authentifier. Pour en savoir plus sur
la gestion des accès, consultez
Sécuriser la configuration des files d'attente.
Délais de configuration des files d'attente
L'application des modifications apportées à la configuration des files d'attente peut prendre plusieurs minutes. Par exemple, après avoir appelé CreateQueue ou UpdateQueue, plusieurs minutes peuvent s'écouler avant que vous puissiez appeler CreateTask sur cette file d'attente.
File d'attente default App Engine
La file d'attente App Engine nommée default fait l'objet d'un traitement spécial dans le SDK App Engine et dans l'API Cloud Tasks.
Quand la file d'attente default est-elle créée ? | |
|---|---|
Si la file d'attente |
|
| Quelles sont les restrictions appliquées par Cloud Tasks ? | |
Pour préserver la compatibilité avec App Engine,
Cloud Tasks applique les restrictions suivantes concernant la
|
|
Risques liés au mélange des méthodes de gestion des files d'attente
Pour le service sous-jacent, les fichiers queue.yaml sont définitifs. L'importation d'un
queue.yaml fichier qui omet les files d'attente existantes dans le projet, quelle que soit la façon dont
elles ont été créées, entraîne leur désactivation ou leur
suspension. Par exemple, si vous utilisez l'API Cloud Tasks pour appeler CreateQueue ou UpdateQueue, puis importez un fichier queue.yaml qui omet ces files d'attente, les files d'attente sont désactivées. Vous devrez ensuite
réactiver les files d'attente désactivées.
Le mélange des méthodes de gestion des files d'attente peut entraîner un comportement inattendu. Prenons les exemples suivants :
Cas de figure 1
Vous appelez CreateQueue pour créer une file d'attente nommée cloud-tasks-queue, puis importez un fichier queue.yaml avec le contenu suivant :
queue:
- name: queue-yaml-queue
Cela génère les états de file d'attente suivants :
- La file d'attente nommée
cloud-tasks-queueet toutes les autres files d'attente préexistantes sont à l'étatDISABLED. - La file d'attente nommée
queue-yaml-queueest à l'étatRUNNING.
Cas de figure 2
Vous utilisez l'API Cloud Tasks pour désactiver une file d'attente, mais elle apparaît ultérieurement dans un fichier queue.yaml importé. La file d'attente est réactivée.
Cas de figure 3
Vous supprimez une file d'attente avec la méthode DeleteQueue, et elle apparaît ultérieurement dans un fichier queue.yaml. L'importation de queue.yaml peut échouer, car
les noms de file d'attente ne peuvent pas être réutilisés pendant plusieurs jours
après la suppression.
Déboguer à l'aide des journaux d'audit
Vous pouvez consulter les journaux d'audit de l'activité d'administration de votre projet et récupérer l'historique des modifications apportées à la configuration des files d'attente, y compris les créations, les mises à jour et les suppressions.
Par exemple, si une importation queue.yaml désactive une file d'attente existante, vous pouvez exécuter
la commande suivante pour renvoyer un message de journal
Disabled queue QUEUE_NAME via la méthode
com.google.appengine.legacy.queue_updated :
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
Pour en savoir plus, consultez la section Lire des entrées de journal.
Réactiver une file d'attente désactivée par l'importation d'un fichier queue.yaml
Si vous mélangez les méthodes de gestion des files d'attente, l'importation d'un fichier queue.yamlrisque de désactiver accidentellement une file d'attente créée via l'API Cloud Tasks.
Pour réactiver la file d'attente, vous pouvez appeler ResumeQueue dans la file d'attente, ou l'ajouter au fichier queue.yaml et l'importer.
Si vous avez précédemment défini un traitement personnalisé
rate dans la queue.yaml
configuration, ResumeQueue rétablit la valeur par défaut de la file d'attente rate. Cela se
reflète dans le
maxDispatchesPerSecond
champ de la réponse à ResumeQueue.
Résoudre les problèmes de quota
Si vous utilisez queue.yaml pour créer vos files d'attente, votre projet dispose d'un quota par défaut
pour le
nombre maximal de files d'attente que vous pouvez
créer. Les files d'attente créées à l'aide de l'API Cloud Tasks disposent également d'un
quota par défaut. Comme dans d'autres cas, le mélange des méthodes queue.yaml et de l'API Cloud Tasks peut produire des résultats inattendus.
Par exemple, lorsque vous créez des files d'attente à l'aide de queue.yaml, puis que vous recevez une augmentation de quota, si vous utilisez ensuite l'API Cloud Tasks pour créer des files d'attente supplémentaires, vous risquez de recevoir des erreurs de quota. Pour résoudre ce problème, vous
pouvez gérer vos quotas à l'aide de la Google Cloud console. Pour en savoir plus, consultez la section
Gérer vos quotas à l'aide de la console.