Exécuter du code de manière asynchrone

Mettez en file d'attente des tâches d'exécution de code asynchrone à l'aide de l'API REST Cloud Tasks, de l'API RPC ou de la bibliothèque cliente Google Cloud et d'un service standard App Engine Java 11/17 en tant que cible Push.

Cet exemple Java 11 utilise deux applications :

  • L'application tasks s'exécute localement en tant qu'outil de ligne de commande pour créer et ajouter des tâches à la file d'attente.
  • L'application Spring Boot tasks-handler traite les requêtes Cloud Tasks en tant que nœud de calcul en servant de point de terminaison pour recevoir les requêtes de tâches. Il s'agit de l'application App Engine principale que vous déployez.

Avant de commencer

Pour déployer l'exemple d'application, procédez comme suit :

  1. Téléchargez et installez le kit de développement Java SE 11 (JDK).
  2. Suivez les instructions de configuration de Cloud Tasks.
  3. Téléchargez et installez Maven pour créer, déployer et gérer votre application.
  4. Initialisez la CLI gcloud et configurez-la pour utiliser le projet que vous avez créé précédemment.
  5. Installez le composant gcloud CLI app-engine-java :

    gcloud components install app-engine-java
    

Configurer l'exemple

Pour télécharger et installer l'exemple, procédez comme suit :

  1. Clonez le dépôt de l'exemple d'application sur votre ordinateur local :

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    Vous pouvez également télécharger l'exemple en tant que fichier zip et l'extraire.

  2. Accédez au répertoire de premier niveau pour l'application tasks-handler :

    cd java-docs-samples/appengine-java11/tasks-handler/

  3. Déployer l'application tasks-handler sur App Engine

    mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

    Remplacez PROJECT_ID par l'ID de votre projet Cloud. Si votre ID de projet est déjà inclus dans le fichier pom.xml, vous n'avez pas besoin d'inclure la propriété -Dapp.deploy.projectId dans la commande que vous exécutez.

Créer une file d'attente

Utilisez la commande gcloud queues de Google Cloud CLI pour créer votre file d'attente.

  1. Dans la ligne de commande, saisissez ce qui suit :

    gcloud tasks queues create MY_QUEUE

  2. Attendez que la file d'attente s'initialise. Vérifiez la création de votre file d'attente à l'aide de la commande describe :

    gcloud tasks queues describe MY_QUEUE

    Le résultat devrait ressembler à ceci :

    name: projects/PROJECT_ID/locations/LOCATION_ID/queues/MY_QUEUE // Note these ids
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING

Ajouter une tâche à la file d'attente

Créez une tâche localement, ajoutez-la à la file d'attente que vous avez configurée, puis transmettez cette tâche à un nœud de calcul asynchrone :

  1. Accédez au répertoire appengine-java11/tasks et compilez l'application :

    cd ../tasks
    mvn package

  2. Définissez les variables d'environnement suivantes sur votre ordinateur. L'exemple d'application utilise ces variables pour créer la requête qui ajoute des tâches à la file d'attente :

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=MY_QUEUE // The queue you created above
    Remarque : Vous pouvez trouver l'ID d'emplacement à l'aide de la commande gcloud suivante :
    gcloud tasks locations list

  3. Créez une tâche, ciblée sur le point de terminaison /tasks/create du contrôleur de gestionnaire de tâches que vous avez déployé, avec une charge utile spécifiée. La charge utile peut être n'importe quelle donnée de la requête dont le nœud de calcul a besoin pour effectuer le traitement de la tâche. Elle est ici codée en dur dans l'exemple et n'a pas besoin d'être spécifiée :

    mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
    
    Une fois la tâche transmise au nœud de calcul et que celui-ci la traite, le nœud de calcul renvoie un code d'état de réussite 2xx au service Cloud Tasks et la supprime automatiquement de la file d'attente.

  4. Vérifiez que la tâche a bien été reçue en affichant les journaux du service de nœud de calcul :

    gcloud app logs read

Étapes suivantes

Maintenant que vous avez ajouté une tâche à une file d'attente Cloud Tasks, continuez à explorer Cloud Tasks en consultant les pages suivantes :