Puoi utilizzare Cloud Tasks per mettere in coda un flusso di lavoro ed eseguirlo in modo asincrono.
Cloud Tasks offre i seguenti controlli:
- Pianificare orari di consegna specifici
- Gestire le percentuali di pubblicazione
- Configurare il comportamento di ripetizione
- Accedere e gestire singole attività in una coda
- Attivare la deduplica delle attività
Questi controlli possono essere utili, ad esempio, per gestire le richieste che attivano un workfow e che potrebbero superare in modo imprevisto i limiti di Workflows. Configurando una coda Cloud Tasks con limiti di frequenza e tentativi di nuovo invio, puoi assicurarti che tutte queste richieste generino esecuzioni del flusso di lavoro.
Per saperne di più, consulta Informazioni su Cloud Tasks.
Tieni presente quanto segue:
Il limite di frequenza deve essere basato sul limite per Workflows per le richieste di scrittura dell'API di esecuzione. Se necessario, puoi richiedere un aumento della maggior parte delle quote nella console Google Cloud. Scopri di più sulle richieste di aumento della quota.
Cloud Tasks è progettato per fornire la consegna "almeno una volta". Tuttavia, Workflows non garantisce l'elaborazione "exactly-once" delle richieste duplicate di Cloud Tasks.
Puoi rimuovere i ritardi di esecuzione e massimizzare il throughput attivando la funzionalità di posticipazione dell'esecuzione nei Workflows. Le esecuzioni in coda vengono eseguite automaticamente non appena diventa disponibile la quota di concorrenza dell'esecuzione. Per maggiori informazioni, consulta Gestire le code di esecuzione.
Prima di iniziare
- Se non hai già un flusso di lavoro da mettere in coda, crealo.
-
Enable the Cloud Tasks API.
Mettere in coda un'attività per eseguire un flusso di lavoro
Crea un account di servizio in modo che Cloud Tasks possa inviare richieste all'API Workflows:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci
SERVICE_ACCOUNT_NAME
con un nome compreso tra 6 e 30 caratteri. Può contenere caratteri alfanumerici minuscoli e trattini. Una volta creato un account di servizio, non puoi modificarne il nome.Per consentire all'entità che eseguirà i comandi Cloud Tasks di agire come account di servizio Identity and Access Management (IAM), concedi un ruolo che consenta all'entità di rubare l'identità dell'account di servizio.
Concedi al nuovo account di servizio il ruolo workflows.invoker in modo che abbia l'autorizzazione per attivare il tuo flusso di lavoro:
gcloud projects add-iam-policy-binding PROJECT_NAME \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \ --role roles/workflows.invoker
Sostituisci quanto segue:
PROJECT_NAME
: il nome del tuo progetto Google Cloud.SERVICE_ACCOUNT_NAME
: il nome dell'account di servizio che hai creato in precedenza.
Se non hai ancora una coda Cloud Tasks, creane una.
Crea un'attività che abbia come target l'endpoint HTTP del tuo flusso di lavoro, utilizzando l'account di servizio che hai creato in precedenza per l'autenticazione:
gcloud tasks create-http-task \ --queue="QUEUE_ID" \ --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \ --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \ --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"
Sostituisci quanto segue:
QUEUE_ID
: l'identificatore che hai assegnato alla coda Cloud Tasks, ad esempiomy-queue
.PROJECT_NAME
: il nome del tuo progetto Google Cloud.REGION_NAME
: la regione in cui si trova il flusso di lavoro, ad esempious-central1
.WORKFLOW_NAME
: il nome del flusso di lavoro per cui vuoi creare un'attività.DOUBLE_ESCAPED_JSON_STRING
: una codifica JSON di tutti gli argomenti che stai passando. Le virgolette doppie all'interno della stringa tra virgolette vengono indicate con barre inverse (\). Ad esempio:--body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
SERVICE_ACCOUNT_NAME
: il nome dell'account di servizio che hai creato in precedenza.
L'attività viene creata e aggiunta alla coda Cloud Tasks. L'attività rimane nella coda fino all'avvio dell'esecuzione del flusso di lavoro e al successivo ritorno di un codice di stato HTTP
2xx
, a quel punto Cloud Tasks la considera completata.
Passaggi successivi
- Tutorial: utilizza una coda Cloud Tasks per mettere in coda le esecuzioni del flusso di lavoro
- Gestire code e attività
- Gestire il backlog di esecuzione
- Passare gli argomenti di runtime in una richiesta di esecuzione