Riferimento queue.yaml

ID regione

Il REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

Il file di configurazione queue.yaml viene utilizzato per creare e configurare quasi tutte le code di attività (push o pull) utilizzate dalla tua app. Tutte le app App Engine includono una coda in modalità push preconfigurata automaticamente denominata default. Anche se non crei personalmente la coda default, puoi aggiungere altre code o modificare la configurazione della coda default utilizzando il file queue.yaml.

Per le app Java, questo file è archiviato in qualsiasi punto della directory del codice sorgente.

Per configurare le code push, puoi utilizzare i metodi queue.yaml o Queue Management di Cloud Tasks, ma non entrambi contemporaneamente. La combinazione del metodo di caricamento queue.yaml con i metodi di gestione della coda può produrre risultati imprevisti ed è sconsigliata.

Per configurare le code pull, devi utilizzare il file queue.yaml.

Esempio

Di seguito è riportato un esempio di base che definisce una coda denominata e sostituisce la velocità di elaborazione predefinita:

queue:
- name: my-push-queue
  rate: 1/s

Di seguito è riportato un esempio più complesso di configurazione queue.yaml che mostra come impostare il numero di tentativi di attività e modificare la velocità di elaborazione predefinita.

queue:
- name: fooqueue
  rate: 1/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
- name: barqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 0
- name: bazqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 3

Sintassi

Il file queue.yaml è un file YAML la cui direttiva principale è queue. Questa direttiva contiene zero o più code denominate. Ogni definizione di coda può specificare i seguenti elementi:

Elemento Descrizione
<bucket-size> (code push)

Facoltativo. Una coda di attività utilizza l'algoritmo token bucket per controllare la velocità di esecuzione delle attività. Ogni coda denominata ha un token bucket che contiene token, fino al massimo specificato dal valore bucket_size. Ogni volta che la tua applicazione esegue un'attività, un token viene rimosso dal bucket. Continui a elaborare le attività nella coda finché il bucket della coda non esaurisce i token. App Engine riempie continuamente il bucket con nuovi token in base alla velocità specificata per la coda.

La dimensione del bucket limita la velocità di elaborazione della coda quando molte attività si trovano nella coda e la frequenza è elevata. Il valore massimo per le dimensioni del bucket è 500. Ciò consente di avere una frequenza elevata in modo che l'elaborazione inizi poco dopo l'inserimento in coda di un'attività, ma limita comunque l'utilizzo delle risorse quando molte attività vengono inserite in coda in un breve periodo di tempo.

Se non specifichi bucket_size per una coda, il valore predefinito è 5. Ti consigliamo di impostare un valore più elevato perché la dimensione predefinita potrebbe essere troppo piccola per molti casi d'uso. Ad esempio, puoi determinare le dimensioni del bucket in base alla velocità di elaborazione.

Per ulteriori informazioni su questo elemento, consulta la descrizione comparativa di max_burst_size

nel riferimento API Cloud Tasks.
<max-concurrent-requests> (code push)

Facoltativo. Imposta il numero massimo di attività che possono essere eseguite contemporaneamente dalla coda specificata. Il valore è un numero intero. Per impostazione predefinita, il limite è di 1000 attività per coda. Il limite superiore consigliato è di 5000 attività per coda. Tieni presente che le code potrebbero aumentare lentamente quando vengono create per la prima volta o se sono rimaste inattive per un po' di tempo.

La limitazione del numero di attività simultanee ti consente di controllare meglio la velocità di esecuzione della coda e può impedire l'esecuzione di troppe attività contemporaneamente. Può anche prevenire la contesa del datastore e rendere le risorse disponibili per altre code o per l'elaborazione online.

Per maggiori informazioni su questo elemento, consulta la descrizione comparativa di max_concurrent_dispatches nel riferimento API Cloud Tasks.

<mode>

Facoltativo. Identifica la modalità coda. Questa impostazione è impostata per impostazione predefinita su push, che identifica una coda come coda push. Se vuoi utilizzare le code pull, imposta la modalità su pull.

<name>

Obbligatorio. Il nome della coda. Questo è il nome che specifichi quando chiami il numero QueueFactory.getQueue().

Il nome di una coda può contenere lettere maiuscole e minuscole, numeri e trattini. La lunghezza massima di un nome di coda è 100 caratteri.

Tutte le app hanno una coda in modalità push denominata predefinita. Questa coda ha una frequenza preimpostata di 5 attività al secondo. Tieni presente che questa coda predefinita non viene visualizzata in Google Cloud console finché non viene utilizzata o configurata per la prima volta. Puoi configurare la coda predefinita, inclusa la modifica della velocità predefinita, definendo una coda denominata "default" nel file queue.yaml.

<rate> (code push)

Obbligatorio. La frequenza con cui le attività vengono elaborate in questa coda. Il valore è un numero seguito da una barra e da un'unità di tempo, dove l'unità è s per i secondi, m per i minuti, h per le ore o d per i giorni. Ad esempio, il valore 5/m indica che le attività verranno elaborate a una velocità di 5 volte al minuto. Il valore massimo per rate è 500/s.

Se il numero è 0 (ad esempio 0/s), la coda viene considerata "in pausa" e non vengono elaborate attività.

Per maggiori informazioni su questo elemento, consulta la descrizione comparativa di max_dispatches_per_second nel riferimento API Cloud Tasks.

<retry-parameters>

Facoltativo. Configura i tentativi di ripetizione per le attività non riuscite nelle code push. Questa aggiunta ti consente di specificare il numero massimo di tentativi per le attività non riuscite in una coda specifica. Puoi anche impostare un limite di tempo per i tentativi e controllare l'intervallo tra un tentativo e l'altro.

I parametri di ripetizione possono contenere i seguenti elementi secondari:

<task-retry-limit>
Il numero di tentativi. Ad esempio, se viene specificato 0 e l'attività non va a buon fine, l'attività non viene riprovata affatto. Se 1 è specificato e l'attività non riesce, l'attività viene ritentata una volta. Se questo parametro non è specificato, l'attività viene riprovata a tempo indeterminato. Se task_retry_limit è specificato con task_age_limit, l'attività viene riprovata finché non vengono raggiunti entrambi i limiti.
<task-age-limit> (code push)
Il limite di tempo per ritentare un'attività non riuscita, misurato dal primo tentativo eseguito per l'attività. Il valore è un numero seguito da un'unità di tempo, dove l'unità è s per i secondi, m per i minuti, h per le ore o d per i giorni. Ad esempio, il valore 5d specifica un limite di cinque giorni dopo il primo tentativo di esecuzione dell'attività. Se questo parametro non è specificato, il tentativo di esecuzione dell'attività viene ripetuto a tempo indeterminato. Se specificato con task_retry_limit, App Engine riprova l'attività finché non vengono raggiunti entrambi i limiti.
<min-backoff-seconds> (code push)
Il numero minimo di secondi da attendere prima di riprovare un'attività dopo il suo errore. Il valore predefinito è 0.1.
<max-backoff-seconds> (code push)
Il numero massimo di secondi da attendere prima di riprovare un'attività dopo il tentativo non riuscito. Il valore predefinito è 3600.
<max-doublings> (code push)
Il numero massimo di volte in cui l'intervallo tra i tentativi di un'attività non riuscita viene raddoppiato prima che l'aumento diventi costante. La costante è: 2**max_doublings * min_backoff_seconds. Il valore predefinito è 16.
<target> (code push)

Facoltativo. Una stringa che denomina un servizio/una versione, una versione frontend o un backend, su cui eseguire tutte le attività inserite in questa coda. Il valore predefinito è la stringa vuota.

La stringa viene anteposta al nome di dominio della tua app durante la costruzione della richiesta HTTP per un'attività. Ad esempio, se l'ID app è my-app e imposti la destinazione su my-version-dot-my-service, il nome host dell'URL verrà impostato su my-version-dot-my-service-dot-my-app.REGION_ID.r.appspot.com.

Se la destinazione non è specificata, le attività vengono richiamate nella stessa versione dell'applicazione in cui sono state inserite nella coda. Pertanto, se hai messo in coda un'attività dalla versione predefinita dell'applicazione senza specificare una destinazione nella coda, l'attività viene richiamata nella versione predefinita dell'applicazione. Tieni presente che se la versione predefinita dell'applicazione cambia tra il momento in cui l'attività viene accodata e il momento in cui viene eseguita, l'attività verrà eseguita nella nuova versione predefinita.

Se utilizzi i servizi insieme a un file dispatch, la richiesta HTTP del tuo task potrebbe essere intercettata e reindirizzata a un altro servizio.

Per tutte le code all'interno di un'app possono essere specificati i seguenti elementi:

Elemento Descrizione
<total-storage-limit>

Facoltativo. Una stringa che sostituisce il limite di spazio di archiviazione della quota predefinito disponibile per lo spazio di archiviazione di Task Queue (100 MB). Ad esempio:

<queue-entries>
  <total-storage-limit>1.2G</total-storage-limit>
  <queue>
    <name>fooqueue</name>
  </queue>
</queue-entries>

Questa quota fa parte della quota di spazio di archiviazione totale dell'applicazione (inclusa la quota del datastore e dell'archivio BLOB).

Se non viene specificato alcun suffisso, il numero specificato viene interpretato come byte. Sono supportati i seguenti suffissi:

  • B (byte)
  • K (kilobyte)
  • M (megabyte)
  • G (gigabyte)
  • T (terabyte)

Se <total-storage-limit> supera lo spazio di archiviazione totale su disco disponibile per un'applicazione, il limite viene impostato sullo spazio di archiviazione disponibile.

Deployment del file di configurazione della coda

Il file queue.yaml può trovarsi ovunque nella directory del codice sorgente.

Per eseguire il deployment del file di configurazione della coda senza modificare la versione attualmente in servizio, utilizza uno dei seguenti comandi nella directory contenente il file della coda, a seconda dell'ambiente:

gcloud

gcloud app deploy queue.yaml

Maven

mvn appengine:deployQueue queue.yaml

Gradle

gradle appengineDeployQueue queue.yaml

IDE

Se utilizzi IntelliJ, seleziona i singoli file di configurazione da implementare utilizzando il modulo di deployment.

Eliminazione delle code

Per eliminare una coda:

  1. Rimuovi la definizione della coda dal file queue.yaml.

  2. Carica la modifica nel file queue.yaml.

    gcloud app deploy queue.yaml

  3. Elimina la coda nella console Google Cloud , seleziona la coda e fai clic su Elimina coda:

    Vai alla pagina Code di attività

Se elimini una coda dalla Google Cloud console, devi attendere 7 giorni prima di ricrearla con lo stesso nome.