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
- Gestisci le percentuali di pubblicazione
- Configura il comportamento di ripetizione dei tentativi
- Accedere e gestire singole attività in una coda
- Abilitare 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 Cloud Tasks con limiti di frequenza e tentativi, puoi assicurarti che tutte queste richieste comportino l'esecuzione del flusso di lavoro.
Per saperne di più, consulta Informazioni su Cloud Tasks.
Tieni presente quanto segue:
Devi basare il limite di frequenza sul limite di Workflows per le richieste di scrittura dell'API di esecuzione. Se necessario, puoi richiedere un aggiustamento della maggior parte delle quote nella console Google Cloud . Scopri di più sugli aggiustamenti della quota.
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 il throughput attivando il backlog di esecuzione in Workflows. Le esecuzioni in attesa vengono eseguite automaticamente non appena diventa disponibile la quota di concorrenza di esecuzione. Per saperne di più, consulta Gestisci il backlog di esecuzione.
Prima di iniziare
- Se non hai già un flusso di lavoro da mettere in coda, creane uno.
-
Enable the Cloud Tasks API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Mettere in coda un'attività per eseguire un flusso di lavoro
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 al principal che eseguirà i comandi Cloud Tasks di agire come service account Identity and Access Management (IAM), concedi un ruolo che consenta al principal di impersonare il service account.
Concedi al nuovo account di servizio il ruolo 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 progetto Google Cloud .SERVICE_ACCOUNT_NAME: il nome del 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 flusso di lavoro, 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 che hai assegnato alla coda 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 trattate come sequenze di 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 Cloud Tasks. L'attività rimane nella coda finché non viene avviata l'esecuzione del flusso di lavoro e restituisce un codice di stato HTTP
2xx, a quel punto Cloud Tasks considera l'attività completata.
Passaggi successivi
- Tutorial: utilizza una coda Cloud Tasks per memorizzare nel buffer le esecuzioni del flusso di lavoro
- Gestire code e attività
- Gestisci il backlog di esecuzione
- Passare argomenti di runtime in una richiesta di esecuzione