Migrazione delle code in modalità push a Cloud Tasks tramite l'upgrade all'SDK più recente (Java)

Prima di eseguire l'upgrade all'ultima versione dell'SDK dei servizi App Engine, consulta la panoramica della migrazione.

Puoi eseguire la migrazione a Cloud Tasks automaticamente aggiornando l'SDK dei servizi App Engine all'ultima versione. Dopo l'upgrade, l'SDK reindirizza automaticamente le chiamate PushQueue alle API frontend di Cloud Tasks. Cloud Tasks conserva le code di attività e le attività esistenti, quindi non è richiesta alcuna migrazione aggiuntiva.

Dietro le quinte, l'SDK aggiornato utilizza le API Cloud Tasks per mantenere la parità delle funzionalità con le funzionalità delle code di attività. L'SDK supporta quanto segue:

  • Creazione di attività batch: l'SDK utilizza le API batch per supportare l'aggiunta di un massimo di 100 attività in una singola chiamata.
  • Ripetizioni a livello di attività: l'SDK supporta configurazioni di ripetizione specifiche per le attività.
  • Attività transazionali: l'SDK mette in coda le attività all'interno delle transazioni Datastore. Per mantenere l'affidabilità, crea o modifica il file cron.yaml.

Prezzi e quote

La migrazione delle code in modalità push a Cloud Tasks potrebbe influire sui prezzi e sulle quote della tua app.

Prezzi

Prima di eseguire la migrazione, consulta i prezzi di Cloud Tasks per stimare il costo mensile.

Analogamente alle code di attività, l'invio di richieste alla tua app App Engine con una destinazione push di Cloud Tasks è senza costi. Tuttavia, a differenza delle code di attività, Cloud Tasks addebita le operazioni eseguite, come la creazione, l'eliminazione o la gestione delle attività. Ciò potrebbe comportare un costo mensile complessivo più elevato rispetto alla coda di attività di App Engine complementare.

Quote

Le richieste Cloud Tasks vengono conteggiate anche ai fini delle quote di richieste di App Engine.

Come le code di attività, Cloud Tasks ha quote specifiche per il servizio. La migrazione a Cloud Tasks probabilmente modificherà le quote.

Prima di iniziare

Le sezioni seguenti illustrano le considerazioni sui costi e sulle quote prima di eseguire la migrazione delle code in modalità push a Cloud Tasks.

  1. Assicurati di avere accesso al codice sorgente di App Engine.

  2. Abilita le API Cloud Tasks e Cloud Scheduler:

    Abilita le API

  3. Per assicurarti che il account di servizio App Engine disponga delle autorizzazioni necessarie per consentire all'SDK di inviare le attività all'API Cloud Tasks, chiedi all'amministratore di concedere il ruolo IAM Cloud Tasks Enqueuer (roles/cloudtasks.enqueuer) sul progetto.

Aggiorna l'SDK dei servizi App Engine

  1. Assicurati che la tua applicazione utilizzi l'ultima versione dell'SDK dei servizi App Engine.

    In pom.xml, aggiorna l'SDK dei servizi App Engine alla versione v5.2.0-beta o successive.

    
        com.google.appengine
        appengine-api-1.0-sdk
        v5.2.0-beta
    
  2. Abilita il routing di Cloud Tasks

    runtime: java25
    service: my-service-b
    
    env_variables:
      APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"
    

    Aggiorna la dipendenza dell'SDK App Engine in pom.xml alla versione v5.2.0-beta o successive.

    Se la tua app utilizza una configurazione XML (appengine-web.xml):

    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <service>my-java-service-b</service>
      <runtime>java25</runtime>
      <env-variables>
        <env-var name="APPENGINE_USE_CLOUDTASK_PUSH_QUEUE" value="true" />
      </env-variables>
    </appengine-web-app>
    
  3. Esegui il deployment dell'app:

    gcloud app deploy
    
  4. Verifica le code in modalità push in Cloud Tasks per assicurarti che la tua app utilizzi Cloud Tasks.

Configura le attività transazionali (facoltativo)

Se la tua app mette in coda le attività all'interno delle transazioni Datastore, l'SDK si basa su un cron job interno per garantire che tutte le attività che non vengono messe in coda durante il commit di Datastore vengano elaborate.

Per gestire le attività transazionali della coda in modalità push, crea o aggiorna il file cron.yaml in modo da chiamare periodicamente il processore interno. Ad esempio:

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

Aggiungi il mapping degli URL nel file web.xml per utils.servlet.SweeperServlet o utils.servlet.jakarta.SweeperServlet per i runtime Java 17/21 Jakarta EE.

<servlet>
 <servlet-name>cloudtask_sweep</servlet-name>
 <servlet-class>com.google.apphosting.utils.servlet.SweeperServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>cloudtask_sweep</servlet-name>
 <url-pattern>/_ah/cloudtask/sweep</url-pattern>
</servlet-mapping>

Passaggi successivi