Auf dieser Seite wird gezeigt, wie Sie eine Waiter-Ressource erstellen. Weitere Informationen über Waiter erfahren Sie unter Grundlagen des Runtime Configurators.
Eine Waiter-Ressource wartet auf eine bestimmte Bedingung für den Erfolg oder das Fehlschlagen, bevor sie eine Antwort zurückgibt. Sie legen sowohl für den Erfolg als auch für den Fehlschlag eine Kardinalitätsbedingung fest, bei der der Waiter wartet, bis eine Anzahl an Variablen unter einem gewissen Pfadpräfix erstellt wurden. Nachdem die Variablen erstellt wurden, antwortet der Waiter. Ihr App-Code kann dann auf den Erfolg oder Fehlschlag antworten. Falls der aktuelle Status Ihrer Variablen bereits entweder der Bedingung für den Erfolg oder der für den Fehlschlag entspricht, gibt der Waiter sofort Erfolg oder Fehlschlag zurück.
Hinweis
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie das gcloud-Befehlszeilentool.
- Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.
- Lesen Sie Grundlagen des Runtime Configurators.
- Lesen Sie RuntimeConfig-Ressourcen erstellen und löschen.
- Lesen Sie Daten festlegen und abrufen.
Waiter erstellen
So erstellen Sie einen Waiter:
Legen Sie die Bedingung für den Erfolg, und optional das Fehlschlagen, des Waiters fest.
Der folgende Beispielcode legt beispielsweise die Bedingungen für Erfolg und Fehlschlag fest. Hier antwortet der Waiter mit Erfolg, wenn die Anzahl der Pfade unter
/status/success
drei entspricht, und mit Fehlschlag, wenn der Pfad unter/status/failure
zwei ist:{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '360s', 'success': { 'cardinality': { 'path': '/status/success', 'number': 3 } }, 'failure': { 'cardinality': { 'path': '/status/failure', 'number': 2 } } }
Best Practices zum Definieren eines Waiter:
- Nur eine Bedingung für den Erfolg und eine für das Fehlschlagen ist pro Waiter möglich.
- Sie sollten einen Waiter pro Pfad aufrechterhalten.
- Bedingungen für das Fehlschlagen werden immer vor Bedingungen für den Erfolg evaluiert.
- Vermeiden Sie Überschneidungen von Präfixen der Bedingungen.
Erstellen Sie den Waiter.
Deployment Manager
Legen Sie den Waiter-Typ fest, wenn Sie einen Waiter in Deployment Manager erstellen:
runtimeconfig.v1beta1.waiter
Geben Sie in den Attributen des Waiter die Werte
name
,location
,timeout
und die Endbedingungen des Waiter an:- name: [NAME] type: runtimeconfig.v1beta1.waiter properties: parent: $(ref.[CONFIG_NAME].name) waiter: [WAITER_NAME] timeout: [TIMEOUT_SECS] success: cardinality: path: [SUCCESS_PATH_PREFIX] number: [SUCCESS_NUMBER]
wobei
[NAME]
ist der Name der Ressource.[CONFIG_NAME]
ist die Config-Ressource für diese Anfrage.[WAITER_NAME]
ist der Name für diesen Waiter.[TIMEOUT_SECS]
ist die Anzahl an Sekunden, bis eine Zeitüberschreitung des Waiter eintritt. Verwenden Sie beispielsweise für 300 Sekunden300s
.[SUCCESS_PATH_PREFIX]
ist das Pfadpräfix, das für eine Erfolgsbedingung überwacht wird.[SUCCESS_NUMBER]
ist die Anzahl an Variablen, die unter diesem Pfad für eine Auswertung als Erfolg vorhanden sein muss.
gcloud
Mit der Google Cloud CLI:
gcloud beta runtime-config configs waiters create [WAITER_NAME] \ --config-name [CONFIG_NAME] \ --success-cardinality-path [SUCCESS_PATH_PREFIX] \ --success-cardinality-number [SUCCESS_NUMBER] --timeout [TIMEOUT_SECS]
Dabei gilt:
[WAITER_NAME]
ist der Name für diesen Waiter.[CONFIG_NAME]
ist die Config-Ressource für diese Anfrage.[SUCCESS_PATH_PREFIX]
ist das Pfadpräfix, das für eine Erfolgsbedingung überwacht wird.[SUCCESS_NUMBER]
ist die Anzahl an Variablen, die unter diesem Pfad für eine Auswertung als Erfolg vorhanden sein muss.[TIMEOUT_SECS]
ist die Anzahl an Sekunden, bis eine Zeitüberschreitung des Waiter eintritt.Die gcloud CLI gibt eine Antwort wie diese zurück:
Created [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
Nachdem der Waiter erstellt wurde, wird vom Tool die zugehörige Vorgangsressource abgefragt, bis der Waiter eine der möglichen Antworten zurückgibt.
Eine vollständige Referenz zu diesem
gcloud
-Befehl finden Sie in der Referenzdokumentation zuruntime-config configs waiters
.
API
Erstellen Sie in der API eine
POST
-Anfrage an den folgenden URI:https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters
wobei
[PROJECT_ID]
ist die Projekt-ID für diese Anfrage.[CONFIG_NAME]
ist der Name der Konfiguration für diese Anfrage.
Die Nutzlast der Anfrage muss den Namen des Waiter, die Erfolgsbedingung und das Zeitlimit beinhalten:
{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '[TIMEOUT_SEC]', 'success': { 'cardinality': { 'path': '[SUCCESS_PATH_PREFIX]', 'number': '[SUCCESS_NUMBER]' } } }
wobei
[PROJECT_ID]
ist die Projekt-ID für diese Anfrage.[CONFIG_NAME]
ist der Name der Konfiguration für diese Anfrage.[WAITER_NAME]
ist der Name des zu erstellenden Waiter.[TIMEOUT_SECS]
ist die Anzahl an Sekunden, bis eine Zeitüberschreitung des Waiter eintritt.[SUCCESS_PATH_PREFIX]
ist das Pfadpräfix, das für eine Erfolgsbedingung überwacht wird.[SUCCESS_NUMBER]
ist die Anzahl an Variablen, die unter diesem Pfad für eine Auswertung als Erfolg vorhanden sein muss.
Bei Erfolg gibt die Anfrage den Namen der Vorgangsobjekte zurück, die Sie zum Abschluss prüfen:
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
Fragen Sie dann den Waiter ab, um regelmäßig zu testen, wann der Waiter antwortet.
Weitere Informationen zur Methode finden Sie in der
waiters().create
-Dokumentation.
Waiter abfragen
Fragen Sie die verknüpften Vorgangsressourcen ab, nachdem Sie einen Waiter erstellt haben, um zu überprüfen, ob der Waiter eine Endbedingung erfüllt hat. Wenn der Waiter eine Endbedingung erfüllt oder das Zeitlimit überschritten hat, gibt der Vorgang done
und eine Antwort anhand der Ergebnisse des Waiter zurück.
Verwenden Sie gcloud
oder die API, um einen Waiter abzufragen.
gcloud
Wenn Sie mit der Google Cloud CLI eine Anfrage zum Erstellen eines Waiters senden, führt das Tool automatisch Abfragen durch und wartet auf eine Antwort des Waiter. Das Tool gibt eine Antwort wie die folgende aus, während es den Waiter abfragt:
Waiting for waiter [WAITER_NAME] to finish...
Wenn Sie nicht möchten, dass das Tool den Waiter nach der Erstellung abfragt, fügen Sie der Erstellungsanfrage das Flag --async
hinzu.
API
Stellen Sie in der REST API eine GET
-Anfrage an den folgenden URI, um den Status des Waiter-Vorgangs zu erhalten:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]
wobei
[PROJECT_ID]
ist die Projekt-ID für diese Anfrage.[CONFIG_NAME]
ist der Name der Konfiguration für diese Anfrage.[WAITER_NAME]
ist der Name des abzufragenden Waiter.
Wenn der Vorgang noch läuft, gibt die API eine Antwort wie die folgende, ohne Status, aus:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]"
}
Wenn der Vorgang abgeschlossen ist, wird er als done
markiert und gibt eine der Antworten zurück, die im Abschnitt Waiter-Antworten beschrieben sind.
Weitere Informationen zur Methode finden Sie in der waiters().create
-Dokumentation.
Waiter-Antworten
Erfolgreiche Endbedingung
Wenn der Waiter eine erfolgreiche Endbedingung erfüllt, gibt der Vorgang folgende Waiter-Ressource zurück:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.runtimeconfig.v1beta1.Waiter",
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]",
"timeout": "360.000s",
"failure": {
"cardinality": {
"path": "[SUCCESS_PATH_PREFIX]",
"number": "[SUCCESS_NUMBER]"
}
},
"success": {
"cardinality": {
"path": "[FAILURE_PATH_PREFIX]",
"number": [FAILURE_NUMBER]
}
},
"createTime": "2016-04-12T18:02:13.316695490Z",
"done": true
}
}
Fehlerbedingung
Wenn der Waiter eine fehlgeschlagene Endbedingung erfüllt, gibt der Vorgang einen Fehler zurück:
Fehlerbedingung wurde erfüllt
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 9,
"message": "Failure condition satisfied."
}
}
Zeitüberschreitung des Waiters
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 4,
"message": "Timeout expired."
}
}
Nächste Schritte
- Informationen zum Runtime Configurator.
- Informationen zum Festlegen und Abrufen von Variablen.
- Legen Sie einen Watcher auf einer bestimmten Variable fest.
- Erstellen und Löschen von RuntimeConfig-Ressourcen.
- Weitere Informationen in der v1beta1-Referenz.
- Mehr über Kontingente für Runtime Configurator erfahren