Referenz für queue.yaml

Regions-ID

REGION_ID ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.

Hier finden Sie weitere Informationen zu Regions-IDs.

Mit der Konfigurationsdatei queue.yaml werden fast alle Aufgabenwarteschlangen erstellt und konfiguriert (Push oder Pull), die Ihre Anwendung verwendet. Alle App Engine-Anwendungen enthalten eine automatisch vorkonfigurierte Push-Warteschlange mit dem Namen default. Obwohl Sie die Warteschlange default nicht selbst erstellen, können Sie mithilfe der Datei queue.yaml andere Warteschlangen hinzufügen oder die Konfiguration der Warteschlange default ändern.

Bei Java-Anwendungen wird diese Datei an einer beliebigen Stelle im Quellcodeverzeichnis gespeichert.

Zum Konfigurieren von Push-Warteschlangen können Sie entweder die Methode queue.yaml oder die Warteschlangenverwaltung von Cloud Tasks verwenden, aber nicht gleichzeitig. Die Kombination der Uploadmethode queue.yaml mit den Methoden zur Warteschlangenverwaltung kann zu unerwarteten Ergebnissen führen und wird nicht empfohlen.

Zum Konfigurieren von Pull-Warteschlangen müssen Sie die Datei queue.yaml verwenden.

Beispiel

Das folgende grundlegende Beispiel definiert eine benannte Warteschlange und überschreibt die Standardverarbeitungsrate:

queue:
- name: my-push-queue
  rate: 1/s

Im Folgenden sehen Sie ein komplexeres Beispiel für eine queue.yaml-Konfiguration, die das Einrichten der Anzahl der Aufgabenversuche und das Ändern der Standardverarbeitungsrate veranschaulicht.

queue:
- name: fooqueue
  rate: 1/s
  retry_parameters:
    task_retry_limit: 7
    task_age_limit: 2d
- name: barqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 0
- name: bazqueue
  rate: 1/s
  retry_parameters:
    min_backoff_seconds: 10
    max_backoff_seconds: 200
    max_doublings: 3

Syntax

Die Datei queue.yaml ist eine YAML-Datei, deren Stammanweisung queue lautet. Diese Anweisung enthält null oder mehr benannte Warteschlangen. In jeder Warteschlangendefinition können die folgenden Elemente angegeben sein:

Element Beschreibung
<bucket-size> Push-Warteschlangen

Optional: Eine Aufgabenwarteschlange steuert die Ausführungsrate von Aufgaben mit dem Token-Bucket-Algorithmus. Jede benannte Warteschlange hat einen Token-Bucket mit Tokens, deren maximale Anzahl durch den Wert von bucket_size angegeben wird. Bei jeder Ausführung einer Aufgabe durch die Anwendung wird ein Token aus dem Bucket entnommen. Die Verarbeitung der Aufgaben in der Warteschlange wird fortgesetzt, bis keine Tokens mehr im Bucket der Warteschlange vorhanden sind. App Engine füllt den Bucket auf der Basis der Rate, die Sie für die Warteschlange angegeben haben, kontinuierlich mit neuen Tokens auf.

Wenn die Warteschlange viele Aufgaben enthält und die Rate hoch ist, wird die Verarbeitungsgeschwindigkeit der Warteschlange von der Bucket-Größe beschränkt. Der maximale Wert für die Bucket-Größe beträgt 500. So können Sie eine hohe Rate festlegen, damit eine Aufgabe sofort nach Einreihung in der Warteschlange verarbeitet wird, gleichzeitig jedoch die Ressourcennutzung beschränken, wenn viele Aufgaben innerhalb eines kurzen Zeitraums in die Warteschlange eingereiht werden.

Wenn Sie für eine Warteschlange keinen Wert für bucket_size festlegen, beträgt der Standardwert 5. Es empfiehlt sich, einen größeren Wert anzugeben, da die Standardgröße für viele Anwendungsfälle eventuell zu klein ist. Sie können beispielsweise die Bucket-Größe anhand der Verarbeitungsrate ermitteln.

Weitere Informationen zu diesem Element finden Sie in der vergleichenden Beschreibung von max_burst_size.

in der Cloud Tasks API-Referenz.
<max-concurrent-requests> Push-Warteschlangen

Optional Legt die maximale Anzahl von Aufgaben fest, die in der angegebenen Warteschlange gleichzeitig ausgeführt werden können. Bei dem Wert handelt es sich um eine ganze Zahl. Das Limit liegt standardmäßig bei 1.000 Aufgaben pro Warteschlange. Die empfohlene Obergrenze liegt bei 5.000 Aufgaben pro Warteschlange. Beachten Sie, dass die Warteschlangen möglicherweise langsam anlaufen, wenn sie neu erstellt oder längere Zeit nicht verwendet wurden.

Durch Beschränkung der Anzahl gleichzeitig ausgeführter Aufgaben können Sie die Ausführungsrate der Warteschlange besser kontrollieren und verhindern, dass zu viele Aufgaben gleichzeitig ausgeführt werden. Außerdem lassen sich damit Konflikte im Datenspeicher vermeiden und Ressourcen für andere Warteschlangen oder für die Onlineverarbeitung verfügbar machen.

Weitere Informationen zu diesem Element finden Sie in der vergleichenden Beschreibung von max_concurrent_dispatches in der Cloud Tasks API-Referenz.

<mode>

Optional: Gibt den Warteschlangenmodus an. Für diese Einstellung ist standardmäßig push festgelegt, womit eine Warteschlange als Push-Warteschlange gekennzeichnet wird. Wenn Sie Pull-Warteschlangen verwenden möchten, wählen Sie den Modus pull aus.

<name>

Erforderlich Der Name der Warteschlange. Dies ist der Name, den Sie beim Aufrufen von QueueFactory.getQueue() angeben.

Ein Warteschlangenname kann Groß- und Kleinbuchstaben, Zahlen und Bindestriche enthalten. Warteschlangennamen dürfen maximal 100 Zeichen lang sein.

Alle Anwendungen haben eine Push-Warteschlange mit dem Namen "default". Bei dieser Warteschlange ist eine Rate von 5 Aufgaben pro Sekunde voreingestellt. Beachten Sie, dass diese Standardwarteschlange erst in der Google Cloud Console angezeigt wird, wenn sie zum ersten Mal verwendet oder konfiguriert wird. Sie können die Standardwarteschlange konfigurieren und damit die Standardrate ändern. Dazu definieren Sie eine Warteschlange mit dem Namen "default" in der Datei queue.yaml.

<rate> Push-Warteschlangen

Erforderlich Die Häufigkeit, mit der Aufgaben in dieser Warteschlange verarbeitet werden. Der Wert ist eine Zahl, nach der ein Schrägstrich und eine Zeiteinheit folgen: s für Sekunden, m für Minuten, h für Stunden oder d für Tage. Zum Beispiel gibt der Wert 5/m an, dass Aufgaben mit einer Rate von fünfmal pro Minute verarbeitet werden. Der Maximalwert für rate ist 500/s.

Wenn die Zahl 0 lautet (also 0/s), gilt die Warteschlange als "angehalten" und es werden keine Aufgaben verarbeitet.

Weitere Informationen zu diesem Element finden Sie in der vergleichenden Beschreibung von max_dispatches_per_second in der Cloud Tasks API-Referenz.

<retry-parameters>

Optional Konfiguriert Wiederholungsversuche für fehlgeschlagene Aufgaben in Push-Warteschlangen. Durch diese Ergänzung können Sie die maximale Anzahl an erneuten Versuchen für nicht ausgeführte Aufgaben in einer bestimmten Warteschlange angeben. Sie können auch ein Zeitlimit für Wiederholungsversuche festlegen und den Zeitabstand zwischen den Versuchen steuern.

Die Wiederholungsparameter können folgende Unterelemente enthalten:

<task-retry-limit>
Die Anzahl der Wiederholungen. Wenn beispielsweise 0 angegeben ist und die Aufgabe fehlschlägt, wird sie nicht wiederholt. Wenn 1 angegeben ist und die Aufgabe fehlschlägt, wird die Aufgabe einmal wiederholt. Wenn dieser Parameter nicht angegeben ist, wird die Aufgabe unbegrenzt wiederholt. Wenn task_retry_limit mit task_age_limit angegeben wird, wird die Aufgabe wiederholt, bis beide Limits erreicht sind.
<task-age-limit> Push-Warteschlangen
Das Zeitlimit für die Wiederholung einer fehlgeschlagenen Aufgabe, gemessen ab der ersten Ausführung der Aufgabe. Der Wert ist eine Zahl, auf die eine Zeiteinheit folgt: s für Sekunden, m für Minuten, h für Stunden oder d für Tage. Der Wert 5d gibt beispielsweise ein Zeitlimit von fünf Tagen nach dem ersten Ausführungsversuch der Aufgabe an. Falls dieser Parameter nicht angegeben ist, wird die Aufgabe unbegrenzt wiederholt. Bei Angabe mit task_retry_limit wiederholt App Engine die Ausführung der Aufgabe, bis beide Limits erreicht sind.
<min-backoff-seconds> Push-Warteschlangen
Die minimale Wartezeit in Sekunden, bevor eine fehlgeschlagene Aufgabe wiederholt wird. Der Standardwert ist 0.1.
<max-backoff-seconds> Push-Warteschlangen
Die maximale Wartezeit in Sekunden, bevor eine fehlgeschlagene Aufgabe wiederholt wird. Der Standardwert ist 3600.
<max-doublings> Push-Warteschlangen
Die maximale Häufigkeit, mit der das Intervall zwischen fehlgeschlagenen Aufgabenwiederholungen verdoppelt wird, bevor die Erhöhung konstant wird. Die Konstante lautet 2**max_doublings * min_backoff_seconds. Der Standardwert ist 16.
<target> Push-Warteschlangen

Optional Ein String mit dem Namen eines Dienstes/einer Version, einer Frontend-Version oder eines Back-Ends für die Ausführung aller Aufgaben in der jeweiligen Warteschlange. Der Standardwert ist ein leerer String.

Der String wird beim Erstellen der HTTP-Anfrage für eine Aufgabe dem Domainnamen der Anwendung vorangestellt. Beispiel: Wenn Ihre Anwendungs-ID my-app lautet und Sie das Ziel auf my-version-dot-my-service setzen, wird der URL-Hostname auf my-version-dot-my-service-dot-my-app.REGION_ID.r.appspot.com gesetzt.

Wird kein Ziel angegeben, werden Aufgaben in der gleichen Version der Anwendung aufgerufen, aus der sie in die Warteschlange gestellt wurden. Wenn Sie also eine Aufgabe aus der Standardversion der Anwendung in die Warteschlange stellen, ohne ein Ziel für die Warteschlange anzugeben, wird die Aufgabe in der Standardversion der Anwendung aufgerufen. Wenn sich die Standardversion der Anwendung zwischen dem Zeitpunkt, an dem die Aufgabe in die Warteschlange gestellt wurde, und dem Zeitpunkt ihrer Ausführung ändert, wird die Aufgabe in der neuen Standardversion ausgeführt.

Wenn Sie Dienste zusammen mit einer Weiterleitungsdatei verwenden, kann die HTTP-Anfrage der Aufgabe abgefangen und an einen anderen Dienst weitergeleitet werden.

Folgende Elemente können für alle Warteschlangen in einer Anwendung angegeben werden:

Element Beschreibung
<total-storage-limit>

Optional. Ein String, der das Standardlimit für das Speicherkontingent überschreibt, das für die Speicherung von Aufgabenwarteschlangen verfügbar ist (100 MB). Beispiel:


<queue-entries>
  <total-storage-limit>1.2G</total-storage-limit>
  <queue>
    <name>fooqueue</name>
  </queue>
</queue-entries>

Dieses Kontingent ist Teil des Gesamtspeicherkontingents der Anwendung (einschließlich des Kontingents für Datenspeicher und Blobstore).

Wenn kein Suffix angegeben ist, wird die von Ihnen angegebene Zahl als Byte interpretiert. Folgende Suffixe werden unterstützt:

  • B (Byte)
  • K (Kilobyte)
  • M (Megabyte)
  • G (Gigabyte)
  • T (Terabyte)

Wenn <total-storage-limit> den gesamten für eine Anwendung verfügbaren Speicher überschreitet, wird das Limit auf den verfügbaren Speicher beschränkt.

Konfigurationsdatei für Warteschlangen erstellen

Die Datei queue.yaml kann sich an einer beliebigen Stelle im Quellcodeverzeichnis befinden.

Verwenden Sie je nach Umgebung einen der folgenden Befehle in dem Verzeichnis mit der Warteschlangendatei, um die Konfigurationsdatei der Warteschlange bereitzustellen, ohne die aktuell verwendete Version zu ändern:

gcloud

gcloud app deploy queue.yaml

Maven

mvn appengine:deployQueue queue.yaml

Gradle

gradle appengineDeployQueue queue.yaml

IDE

Wenn Sie IntelliJ oder Eclipse verwenden, wählen Sie im Bereitstellungsformular die einzelnen Konfigurationsdateien aus, die bereitgestellt werden sollen.

Warteschlangen löschen

So löschen Sie eine Warteschlange:

  1. Entfernen Sie die Warteschlangendefinition aus der Datei queue.yaml.

  2. Laden Sie die Änderung in Ihre queue.yaml-Datei hoch.

    gcloud app deploy queue.yaml

  3. Löschen Sie die Warteschlange in der Google Cloud Console, wählen Sie die Warteschlange aus und klicken Sie auf Warteschlange löschen:

    Seite „Aufgabenwarteschlangen“ öffnen

Wenn Sie eine Warteschlange über die Google Cloud Console löschen, können Sie erst nach sieben Tagen eine Warteschlange mit dem gleichen Namen erstellen.