Halaman ini menjelaskan cara membuat resource Waiter. Untuk mempelajari lebih lanjut waiter, baca Dasar-Dasar Runtime Configurator.
Resource Waiter menunggu kondisi keberhasilan atau kegagalan tertentu sebelum menampilkan respons. Untuk keberhasilan dan kegagalan, Anda menetapkan kondisi Kardinalitas, dengan penunggu menunggu sejumlah variabel dibuat di bawah awalan jalur tertentu. Setelah variabel dibuat, pelayan akan ditampilkan. Kode aplikasi Anda kemudian dapat merespons keberhasilan atau kegagalannya. Jika status variabel Anda saat ini sudah cocok dengan kondisi akhir keberhasilan atau kegagalan, waiter akan segera menampilkan keberhasilan atau kegagalan.
Sebelum memulai
- Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal alat command line`gcloud`.
- Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.
- Baca Dasar-Dasar Runtime Configurator.
- Baca Membuat dan Menghapus Resource RuntimeConfig.
- Baca Menyetel dan Mendapatkan Data.
Membuat penunggu
Untuk membuat penunggu:
Tentukan keberhasilan Anda, dan secara opsional, kondisi kegagalan untuk pelayan.
Misalnya, kode contoh berikut menetapkan kondisi untuk keberhasilan dan kegagalan, dengan pelayan berhasil ditampilkan jika jumlah jalur di bawah
/status/success
adalah tiga dan gagal jika jalur di bawah/status/failure
adalah dua:{ '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 } } }
Praktik terbaik untuk menentukan waiter:
- Hanya satu kondisi berhasil dan satu kondisi gagal yang diizinkan per waiter.
- Anda harus mempertahankan satu pelayan per jalur.
- Kondisi kegagalan selalu dievaluasi sebelum kondisi keberhasilan.
- Jangan tumpang-tindih awalan jalur di antara kondisi.
Buat penunggu.
Deployment Manager
Untuk membuat penunggu di Deployment Manager, tentukan jenis penunggu:
runtimeconfig.v1beta1.waiter
Dalam properti pelayan, berikan
name
,location
,timeout
, dan kondisi akhir pelayan:- 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]
dengan:
[NAME]
adalah nama resource.[CONFIG_NAME]
adalah resource Config untuk permintaan ini.[WAITER_NAME]
adalah nama untuk pelayan ini.[TIMEOUT_SECS]
adalah jumlah detik untuk menunggu sebelum waktu tunggu habis. Misalnya, selama 300 detik, gunakan300s
.[SUCCESS_PATH_PREFIX]
adalah awalan jalur untuk memantau kondisi keberhasilan.[SUCCESS_NUMBER]
adalah jumlah variabel yang ada di jalur ini agar dianggap berhasil.
gcloud
Dengan 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]
dengan:
[WAITER_NAME]
adalah nama untuk pelayan ini.[CONFIG_NAME]
adalah resource RuntimeConfig untuk permintaan ini.[SUCCESS_PATH_PREFIX]
adalah awalan jalur untuk memantau kondisi keberhasilan.[SUCCESS_NUMBER]
adalah jumlah variabel yang ada di jalur ini agar dianggap berhasil.[TIMEOUT_SECS]
jumlah detik untuk menunggu sebelum waktu tunggu pelayan habis.gcloud CLI menampilkan respons seperti:
Created [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
Setelah membuat waiter, alat ini akan melakukan polling pada resource Operasi terkait hingga waiter menampilkan salah satu respons yang berlaku.
Untuk referensi lengkap perintah
gcloud
ini, baca dokumentasi referensiruntime-config configs waiters
.
API
Di API, buat permintaan
POST
ke URI berikut:https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters
dengan:
[PROJECT_ID]
adalah project ID untuk permintaan ini.[CONFIG_NAME]
adalah nama konfigurasi untuk permintaan ini.
Payload permintaan harus berisi nama pelayan, kondisi keberhasilan, dan durasi waktu tunggu:
{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '[TIMEOUT_SEC]', 'success': { 'cardinality': { 'path': '[SUCCESS_PATH_PREFIX]', 'number': '[SUCCESS_NUMBER]' } } }
dengan:
[PROJECT_ID]
adalah project ID untuk permintaan ini.[CONFIG_NAME]
adalah nama konfigurasi untuk permintaan ini.[WAITER_NAME]
adalah nama waiter yang akan dibuat.[TIMEOUT_SECS]
jumlah detik untuk menunggu sebelum waktu tunggu pelayan habis.[SUCCESS_PATH_PREFIX]
adalah awalan jalur untuk memantau kondisi keberhasilan.[SUCCESS_NUMBER]
adalah jumlah variabel yang ada di jalur ini agar dianggap berhasil.
Jika berhasil, permintaan akan menampilkan nama objek operasi yang Anda polling untuk diselesaikan:
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
Selanjutnya, lakukan polling pada waiter untuk memeriksa secara berkala saat waiter kembali.
Untuk mempelajari metode ini lebih lanjut, baca dokumentasi
waiters().create
.
Melakukan polling pada penunggu
Setelah membuat waiter, lakukan polling terhadap
resource Operasi
terkait untuk memeriksa apakah waiter telah memenuhi salah satu kondisi akhir. Jika pelayan telah memenuhi kondisi akhir atau waktu tunggu habis, operasi akan ditampilkan sebagai done
dan menampilkan respons berdasarkan hasil pelayan.
Gunakan gcloud
atau API untuk melakukan polling pada pelayan.
gcloud
Dengan Google Cloud CLI, saat Anda membuat permintaan untuk membuat waiter, alat ini akan otomatis melakukan polling dan menunggu waiter kembali. Alat ini akan mencetak respons seperti berikut saat melakukan polling pada waiter:
Waiting for waiter [WAITER_NAME] to finish...
Jika Anda tidak ingin alat melakukan polling pada waiter setelah membuatnya, berikan
tanda --async
dengan permintaan pembuatan Anda.
API
Di REST API, buat permintaan GET
ke URI berikut untuk mendapatkan
status operasi waiter:
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]
dengan:
[PROJECT_ID]
adalah project ID untuk permintaan ini.[CONFIG_NAME]
adalah nama konfigurasi untuk permintaan ini.[WAITER_NAME]
adalah nama pelayan yang akan di-polling.
Jika operasi masih berlangsung, API akan menampilkan respons seperti berikut, tanpa status:
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]"
}
Jika operasi selesai, operasi akan ditandai sebagai done
dan menampilkan
salah satu respons yang dijelaskan di bagian Respons waiter.
Untuk mempelajari metode ini lebih lanjut, baca dokumentasi
waiters().create
.
Respons pelayan
Kondisi akhir yang berhasil
Jika pelayan telah memenuhi kondisi akhir berhasil, operasi akan menampilkan resource Pelayan:
{
"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
}
}
Kondisi kegagalan
Jika waiter memenuhi kondisi akhir kegagalan atau waktu tunggu habis, operasi akan menampilkan error.
Kondisi kegagalan terpenuhi
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 9,
"message": "Failure condition satisfied."
}
}
Waktu tunggu waiter habis
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 4,
"message": "Timeout expired."
}
}
Langkah selanjutnya
- Pelajari Runtime Configurator.
- Pelajari cara menetapkan dan mendapatkan variabel.
- Tetapkan Watcher ke variabel tertentu.
- Membuat dan menghapus Resource RuntimeConfig.
- Lihat referensi v1beta1.
- Lihat Kuota untuk Runtime Configurator.