Migrer des files d'attente d'envoi vers Cloud Tasks (Go)

Avant de passer à la dernière version du SDK des services App Engine, consultez la présentation de la migration.

Vous pouvez migrer automatiquement vers Cloud Tasks en mettant à jour le SDK des services App Engine vers la dernière version. Une fois la mise à niveau effectuée, le SDK redirige automatiquement les appels PushQueue vers les API frontend Cloud Tasks. Cloud Tasks conserve vos files d'attente et vos tâches existantes. Aucune migration supplémentaire n'est donc requise.

En coulisses, le SDK mis à jour utilise les API Cloud Tasks pour maintenir la parité des fonctionnalités avec les fonctionnalités des files d'attente de tâches. Le SDK est compatible avec les éléments suivants :

  • Création de tâches par lot : le SDK utilise des API par lot pour permettre d'ajouter jusqu'à 100 tâches en un seul appel.
  • Tentatives d'exécution au niveau de la tâche : le SDK est compatible avec les configurations de tentatives d'exécution spécifiques aux tâches.
  • Tâches transactionnelles : le SDK met en file d'attente les tâches dans les transactions Datastore. Pour maintenir la fiabilité, créez ou modifiez le fichier cron.yaml.

Tarifs et quotas

La migration de vos files d'attente d'envoi vers Cloud Tasks peut avoir une incidence sur les tarifs et les quotas de votre application.

Tarifs

Consultez les tarifs Cloud Tasks pour estimer votre coût mensuel avant la migration.

Comme pour les files d'attente de tâches, l'envoi de requêtes à votre application App Engine avec une cible d'envoi Cloud Tasks est sans frais. Toutefois, contrairement aux files d'attente de tâches, Cloud Tasks facture les opérations effectuées, telles que la création, la suppression ou la gestion des tâches. Cela peut entraîner un coût mensuel global plus élevé que celui de la file d'attente de tâches App Engine sans frais.

Quotas

Les requêtes Cloud Tasks sont également comptabilisées dans vos quotas de requêtes App Engine.

Comme les files d'attente de tâches, Cloud Tasks dispose de quotas spécifiques au service. La migration vers Cloud Tasks modifiera probablement vos quotas.

Avant de commencer

Les sections suivantes décrivent les considérations relatives aux coûts et aux quotas avant de migrer les files d'attente d'envoi vers Cloud Tasks.

  1. Assurez-vous d'avoir accès au code source App Engine.

  2. Activez les API Cloud Tasks et Cloud Scheduler :

    Activer les API

  3. Pour vous assurer que le compte de service App Engine dispose des autorisations nécessaires pour permettre au SDK de distribuer des tâches à l'API Cloud Tasks, demandez à votre administrateur d'accorder au compte de service le rôle IAM Enfileur Cloud Tasks (roles/cloudtasks.enqueuer) sur le projet.

Mettre à jour le SDK des services App Engine

  1. Assurez-vous que votre application utilise la dernière version du SDK des services App Engine.

    Dans votre fichier go.mod, mettez à jour le module google.golang.org/appengine/v2 vers la version v2.1.0-preview ou une version ultérieure.

    module my-app
    
    go 1.27
    
    require (
        google.golang.org/appengineppengine/v2.1.0-preview
    )
  2. Activer le routage Cloud Tasks

    runtime: 1.27
    service: my-service-b
    
    env_variables:
      APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"
    
  3. Déployez l'application :

    gcloud app deploy
    
  4. Vérifiez les files d'attente d'envoi dans Cloud Tasks pour vous assurer que votre application utilise Cloud Tasks.

Configurer les tâches transactionnelles (facultatif)

Si votre application met en file d'attente des tâches dans les transactions Datastore, le SDK s'appuie sur un job Cron interne pour s'assurer que toutes les tâches qui ne parviennent pas à être mises en file d'attente lors de la validation du datastore sont finalement traitées.

Pour gérer les tâches transactionnelles de la file d'attente d'envoi, créez ou mettez à jour votre fichier cron.yaml afin d'appeler régulièrement le processeur interne. Exemple :

cron:
- description: "Process push queue transactional tasks"
  url: /_ah/cloudtask/sweep
  schedule: every 30 minutes # Change this based on the usage pattern

Étape suivante