Mettere in coda le esecuzioni del flusso di lavoro utilizzando Cloud Tasks

Puoi utilizzare Cloud Tasks per inserire in coda un flusso di lavoro ed eseguirlo in modo asincrono.

Cloud Tasks offre i seguenti controlli:

  • Pianificare tempi di consegna specifici
  • Gestire le percentuali di pubblicazione
  • Configura il comportamento per i nuovi tentativi
  • Accedere alle singole attività e gestirle in una coda
  • Attiva deduplicazione attività

Questi controlli possono essere utili, ad esempio, per gestire le richieste che attivano un e questo potrebbe inaspettatamente superare 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 ulteriori informazioni, vedi Informazioni su Cloud Tasks.

Tieni presente quanto segue:

  • Basa la limitazione di frequenza sul limite di Workflows per le richieste di scrittura dell'API Execution. Se puoi richiedere l'aumento della maggior parte delle quote nella console Google Cloud. Scopri di più su richieste di aumento delle quote

  • Cloud Tasks è progettato per offrire "almeno una volta" la distribuzione dei dati; tuttavia, Workflows non garantisce che l'elaborazione "exactly-once" di richieste duplicate da Cloud Tasks.

  • Puoi rimuovere i ritardi nell'esecuzione e massimizzare la velocità effettiva attivando dell'esecuzione in backlogging in Workflows. Esecuzioni in backlog viene eseguita automaticamente non appena diventa disponibile la quota di contemporaneità di esecuzione. Per maggiori informazioni, consulta Gestire le code di esecuzione.

Prima di iniziare

  1. Se non disponi già di un flusso di lavoro da mettere in coda, creane uno.
  2. Enable the Cloud Tasks API.

    Enable the API

Mettere in coda un'attività per eseguire un flusso di lavoro

  1. 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 che tra 6 e 30 caratteri. Può contenere caratteri alfanumerici minuscoli e trattini. Dopo aver creato un account di servizio, non puoi modificarne il nome.

  2. Per consentire l'entità che eseguirà le tue attività di Cloud Tasks consente di agire come servizio IAM (Identity and Access Management) l'account di servizio, concedi un ruolo che consenta all'entità di impersonare l'account di servizio.

  3. Concedi al tuo nuovo account di servizio workflows.invoker in modo che account dispone dell'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.
  4. Se non hai ancora una coda Cloud Tasks, creane una.

  5. Crea un'attività che abbia come target l'endpoint HTTP del tuo flusso di lavoro utilizzando il metodo 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 al tuo Coda di Cloud Tasks; ad esempio my-queue.
    • PROJECT_NAME: il nome del tuo account Google Cloud progetto.
    • REGION_NAME: la regione in cui si trova il flusso di lavoro, ad esempio us-central1.
    • WORKFLOW_NAME: il nome del flusso di lavoro desiderato per cui creare un'attività.
    • DOUBLE_ESCAPED_JSON_STRING: una codifica JSON di eventuali argomenti che stai passando. Le virgolette doppie all'interno del le stringhe tra virgolette vengono convertite in caratteri di escape mediante barre rovesciate (\). Ad esempio: --body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio creato in precedenza.

    L'attività viene creata e aggiunta alla coda di Cloud Tasks. L'attività rimane in coda fino all'avvio dell'esecuzione del flusso di lavoro. restituisce un codice di stato HTTP 2xx, dopodiché Cloud Tasks considera l'attività completata.

Passaggi successivi