Puoi utilizzare Cloud Tasks per mettere in coda un workflow ed eseguirlo in modo asincrono.
Cloud Tasks offre i seguenti controlli:
- Pianifica orari di consegna specifici
- Gestisci le percentuali di pubblicazione
- Configura il comportamento di ripetizione dei tentativi
- Accedi alle singole attività in una coda e gestiscile
- Abilita la deduplicazione delle attività
Questi controlli possono essere utili, ad esempio, per gestire le richieste che attivano un workflow e che potrebbero superare in modo imprevisto i limiti di Workflows. Configurando una coda di Cloud Tasks con limiti di frequenza e ripetizioni dei tentativi, puoi assicurarti che tutte queste richieste comportino l'esecuzione del workflow.
Per saperne di più, consulta Informazioni su Cloud Tasks.
Tieni presente quanto segue:
Dovresti basare il limite di frequenza sul limite di Workflows per le richieste di scrittura dell'API Execution. Se necessario, puoi richiedere una modifica della maggior parte delle quote nella Google Cloud console. Scopri di più sulle modifiche delle quote.
Cloud Tasks è progettato per fornire la consegna "at least once"; tuttavia, Workflows non garantisce l'elaborazione "exactly-once" delle richieste duplicate da Cloud Tasks.
Puoi rimuovere i ritardi di esecuzione e massimizzare la velocità effettiva abilitando il backlog di esecuzione in Workflows. Le esecuzioni in backlog vengono eseguite automaticamente non appena la quota di concorrenza di esecuzione diventa disponibile. Per saperne di più, consulta Gestisci il backlog di esecuzione.
Prima di iniziare
- Se non hai ancora un workflow che vuoi mettere in coda, creane uno.
Abilita l'API Cloud Tasks.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.
Metti in coda un'attività per eseguire un workflow
Crea un service account in modo che Cloud Tasks possa effettuare richieste all'API Workflows:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci
SERVICE_ACCOUNT_NAMEcon 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 service account Identity and Access Management (IAM) , concedi un ruolo che consenta all'entità di simulare l'identità del service account.
Concedi al nuovo account di servizio il workflows.invoker in modo che l' account abbia l'autorizzazione per attivare il workflow:
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 Google Cloud progetto.SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
Se non hai ancora una coda di Cloud Tasks, creane una.
Crea un'attività che abbia come target l'endpoint HTTP del workflow, utilizzando il account di servizio 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 assegnato alla coda di Cloud Tasks, ad esempiomy-queue.PROJECT_NAME: il nome del tuo Google Cloud progetto.REGION_NAME: la regione in cui si trova il workflow, ad esempious-central1.WORKFLOW_NAME: il nome del workflow 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 sottoposte a escape utilizzando le barre rovesciate (\). Ad esempio:--body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"SERVICE_ACCOUNT_NAME: il nome del service account che hai creato in precedenza.
L'attività viene creata e aggiunta alla coda di Cloud Tasks. L'attività rimane nella coda finché l'esecuzione del workflow non viene avviata e non restituisce un codice di stato HTTP
2xx, a quel punto Cloud Tasks considera l'attività completata.
Passaggi successivi
- Tutorial: utilizzare una coda di Cloud Tasks per memorizzare nel buffer le esecuzioni del workflow
- Gestire code e attività
- Gestire il backlog di esecuzione
- Passare argomenti di runtime in una richiesta di esecuzione