queue.xml-Referenz

Regions-ID

REGION_ID ist ein Abkürzungscode, den Google basierend auf 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 Regionen-IDs häufig verwendeten Länder- und Provinzcodes ähneln. Das Einbinden von REGION_ID.r in App Engine-URLs ist für vorhandene Anwendungen optional und wird bald für alle neuen Anwendungen erforderlich sein.

Für einen reibungslosen Übergang wird App Engine nach und nach für die Verwendung von Regions-IDs aktualisiert. Wenn wir Ihr Google Cloud-Projekt noch nicht aktualisiert haben, wird für Ihre Anwendung keine Regions-ID angezeigt. Da die ID für vorhandene Anwendungen optional ist, müssen Sie keine URLs aktualisieren oder andere Änderungen vornehmen, sobald die Regions-ID für Ihre vorhandenen Anwendungen verfügbar ist.

Hier finden Sie weitere Informationen zu Regions-IDs.

In Anwendungen, in denen die Verwaltung von Warteschlangen mit dem App Engine SDK erfolgt, werden diese Warteschlangen in einer Konfigurationsdatei namens "queue.xml" definiert. Bei Java-Apps wird diese Datei im WEB-INF-Verzeichnis der App gespeichert. Sie können queue.xml verwenden, um sowohl Push-Warteschlangen als auch Pull-Warteschlangen zu konfigurieren. Diese Konfigurationsdatei ist für Push-Warteschlangen, die eine Standardwarteschlange haben, optional. Pull-Warteschlangen müssen eigens in queue.xml konfiguriert werden.

Beispiel

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

<queue-entries>
  <queue>
    <name>my-push-queue</name>
    <rate>1/s</rate>
  </queue>
</queue-entries>

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

<queue-entries>
  <queue>
    <name>fooqueue</name>
    <rate>1/s</rate>
    <retry-parameters>
      <task-retry-limit>7</task-retry-limit>
      <task-age-limit>2d</task-age-limit>
    </retry-parameters>
  </queue>
  <queue>
    <name>barqueue</name>
    <rate>1/s</rate>
    <retry-parameters>
      <min-backoff-seconds>10</min-backoff-seconds>
      <max-backoff-seconds>200</max-backoff-seconds>
      <max-doublings>0</max-doublings>
    </retry-parameters>
  </queue>
  <queue>
    <name>bazqueue</name>
    <rate>1/s</rate>
    <retry-parameters>
      <min-backoff-seconds>10</min-backoff-seconds>
      <max-backoff-seconds>200</max-backoff-seconds>
      <max-doublings>3</max-doublings>
    </retry-parameters>
  </queue>
</queue-entries>

Syntax

Die queue.xml Datei ist eine XML-Datei mit dem Stammelement <queue-entries>. Diese Anweisung enthält null oder mehr benannte Warteschlangen, die in <queue> - Elementen angegeben sind. In jeder Warteschlangendefinition können folgende Elemente angegeben werden:

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. Die empfohlene Größe ist die Verarbeitungsrate geteilt durch 5 (Rate/5).

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 unter 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 namens "default". Bei dieser Warteschlange ist eine Rate von 5 Aufgaben pro Sekunde voreingestellt, sie können Sie jedoch ändern, indem Sie in queue.xml eine Standardwarteschlange definieren. Wenn Sie keine Standardwarteschlange in queue.xml festlegen, wird die Warteschlange erst bei der ersten Verwendung in der Google Cloud Console angezeigt. Sie können die Einstellungen für diese Warteschlange anpassen, indem Sie eine Warteschlange mit dem Namen default definieren.

<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 Front-End-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.

Die folgenden Elemente können für alle Warteschlangen innerhalb einer Anwendung angegeben werden, die im Stammelement <queue-entries> festgelegt sind:

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.xml sollte sich im Verzeichnis WEB-INF des Standarddienstes befinden.

Führen Sie folgenden Befehl aus, um die Konfigurationsdatei für Warteschlangen bereitzustellen, ohne die aktuelle Bereitstellungsversion zu ändern:

appcfg.sh update_queues <application directory>

Ersetzen von <application directory> durch den Pfad zum Hauptverzeichnis Ihrer Anwendung.

Warteschlangen löschen

So löschen Sie eine Warteschlange:

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

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

    [PATH_TO_APP_ENGINE_SDK]\bin\appcfg.sh update_queues [YOUR_APP_DIR]
    

    Unter Windows:

    [PATH_TO_APP_ENGINE_SDK]\bin\appcfg.cmd update_queues [YOUR_APP_DIR]
    
  3. Löschen Sie die Warteschlange in der Cloud Console, wählen Sie die Warteschlange aus und klicken Sie auf Warteschlange löschen:

    Zur Seite "Aufgabenwarteschlangen"

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