Workflowausführungen mit Cloud Tasks in die Warteschlange stellen

Mit Cloud Tasks können Sie einen Workflow in die Warteschlange stellen und asynchron ausführen.

Cloud Tasks bietet die folgenden Steuerelemente:

  • Bestimmte Lieferzeiten planen
  • Zustellungsraten verwalten
  • Wiederholungsprozess konfigurieren
  • Auf einzelne Aufgaben in einer Warteschlange zugreifen und verwalten
  • Deduplizierung von Aufgaben aktivieren

Diese Steuerelemente können beispielsweise nützlich sein, um Anfragen zu verwalten, die einen Workflow auslösen und die Workflow-Limits unerwartet überschreiten könnten. Wenn Sie eine Cloud Tasks-Warteschlange mit Ratenlimits und Wiederholungen konfigurieren, können Sie dafür sorgen, dass alle Anfragen dieser Art zu Workflow-Ausführungen führen.

Weitere Informationen finden Sie unter Cloud Tasks.

Wichtige Hinweise:

  • Die Ratenbegrenzung sollte auf dem Workflows-Limit für Execution API-Schreibanfragen basieren. Bei Bedarf können Sie in der Google Cloud Console eine Anpassung der meisten Kontingente beantragen. Weitere Informationen zu Kontingentanpassungen

  • Cloud Tasks ist darauf ausgelegt, eine Aufgabe „mindestens einmal“ auszuführen. Workflows garantiert jedoch keine genau einmalige Verarbeitung von doppelten Anfragen von Cloud Tasks.

  • Sie können Ausführungsverzögerungen vermeiden und den Durchsatz maximieren, indem Sie die Ausführungs-Backlog-Funktion in Workflows aktivieren. Zurückgestellte Ausführungen werden automatisch ausgeführt, sobald das Kontingent für die Nebenläufigkeit von Ausführungen verfügbar ist. Weitere Informationen finden Sie unter Ausführungsrückstände verwalten.

Hinweise

  1. Wenn Sie noch keinen Workflow haben, den Sie in die Warteschlange stellen möchten, erstellen Sie einen.
  2. Enable the Cloud Tasks API.

    Enable the API

Aufgabe zum Ausführen eines Workflows in die Warteschlange stellen

  1. Erstellen Sie ein Dienstkonto, damit Cloud Tasks Anfragen an die Workflows API senden kann:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch einen Namen mit 6 bis 30 Zeichen. Er kann alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.

  2. Damit das Hauptkonto, das Ihre Cloud Tasks-Befehle ausführt, als IAM-Dienstkonto (Identity and Access Management) fungieren kann, weisen Sie eine Rolle zu, mit der das Hauptkonto die Identität des Dienstes übernehmen kann..

  3. Weisen Sie Ihrem neuen Dienstkonto die Rolle workflows.invoker zu, damit das Konto die Berechtigung zum Auslösen Ihres Workflows hat:

    gcloud projects add-iam-policy-binding PROJECT_NAME \
        --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \
        --role roles/workflows.invoker

    Ersetzen Sie Folgendes:

    • PROJECT_NAME: der Name Ihres Google Cloud -Projekts.
    • SERVICE_ACCOUNT_NAME: Name des zuvor erstellten Dienstkontos.
  4. Wenn Sie noch keine Cloud Tasks-Warteschlange haben, erstellen Sie eine.

  5. Erstellen Sie eine Aufgabe, die auf den HTTP-Endpunkt Ihres Workflows ausgerichtet ist. Verwenden Sie dazu das Dienstkonto, das Sie zuvor zur Authentifizierung erstellt haben:

    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"

    Dabei gilt:

    • QUEUE_ID: die ID, die Sie Ihrer Cloud Tasks-Warteschlange zugewiesen haben, z. B. my-queue.
    • PROJECT_NAME: der Name Ihres Google Cloud-Projekts.
    • REGION_NAME: Die Region, in der sich Ihr Workflow befindet, z. B. us-central1.
    • WORKFLOW_NAME: Der Name des Workflows, für den Sie eine Aufgabe erstellen möchten.
    • DOUBLE_ESCAPED_JSON_STRING: Eine JSON-Codierung aller Argumente, die Sie übergeben. Die doppelten Anführungszeichen innerhalb des Strings in Anführungszeichen werden mit Schrägstrichen (\) maskiert. Beispiel: --body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • SERVICE_ACCOUNT_NAME: Der Name des zuvor erstellten Dienstkontos.

    Ihre Aufgabe wird erstellt und Ihrer Cloud Tasks-Warteschlange hinzugefügt. Die Aufgabe bleibt in der Warteschlange, bis die Workflowausführung beginnt und ein HTTP-Statuscode 2xx zurückgegeben wird. Dann betrachtet Cloud Tasks die Aufgabe als abgeschlossen.

Nächste Schritte