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 folgende 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 die die Workflows-Grenzen unerwartet überschreiten könnten. Von eine Cloud Tasks-Warteschlange mit Ratenbegrenzungen und Wiederholungsversuchen konfigurieren, können Sie dafür sorgen, dass alle Anfragen zur Ausführung von Workflows führen.

Weitere Informationen finden Sie unter Cloud Tasks verstehen

Wichtige Hinweise:

  • Das Ratenlimit sollte auf dem Workflow-Limit basieren. für Schreibanfragen der Execution API. Wenn können Sie in der Google Cloud Console eine Erhöhung der meisten Kontingente beantragen. Weitere Informationen zu Anfragen zur Kontingenterhöhung

  • Cloud Tasks ist darauf ausgelegt, eine Aufgabe „mindestens einmal“ auszuführen. Workflows sorgt jedoch nicht dafür, dass doppelte Anfragen von Cloud Tasks genau einmal verarbeitet werden.

  • Sie können Ausführungsverzögerungen vermeiden und den Durchsatz maximieren, indem Sie für das Ausführungs-Backlogging. Zurückgestellte Ausführungen wird automatisch ausgeführt, sobald ein Kontingent für die Nebenläufigkeit der Ausführung verfügbar ist. Weitere Informationen finden Sie unter Ausführungsrückstände verwalten.

Hinweis

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

    Enable the API

Aufgabe in die Warteschlange stellen, um einen Workflow auszuführen

  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, der zwischen 6 und 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

    Dabei gilt:

    • 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 Kennzeichnung, die Sie der 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.

    Die Aufgabe wird erstellt und Ihrer Cloud Tasks-Warteschlange hinzugefügt. Die Aufgabe bleibt in der Warteschlange, bis die Workflowausführung beginnt und einen HTTP-Statuscode 2xx zurückgibt. An diesem Punkt betrachtet Cloud Tasks die Aufgabe als abgeschlossen.

Nächste Schritte