Bagikan melalui


Operasi yang berlangsung lama

Operasi jangka panjang (LRO) adalah tugas yang memakan waktu asinkron yang memungkinkan polling asinkron sambil mempertahankan responsivitas dan skalabilitas. Poling mengacu pada pola klien yang perlu memeriksa status operasi secara berkala hingga operasi tersebut selesai.

Dalam konteks layanan web dan API, LMO merujuk pada tugas atau proses yang memerlukan banyak waktu untuk dijalankan, membuat LMO tidak cocok untuk penyelesaian segera dalam satu siklus respons permintaan.

Contoh operasi tersebut termasuk unggahan data besar, komputasi kompleks, pemrosesan batch, atau provisi sumber daya di lingkungan cloud. Tidak semua operasi yang berjalan lama menghasilkan hasil di Fabric. Beberapa operasi hanya berjalan hingga selesai tanpa memberikan URL hasil apa pun.

Spesifikasi API

API yang menggunakan infrastruktur LRO mengembalikan salah satu dari dua hasil yang berhasil:

  • Kode status HTTP 200 OK atau 201 CREATED - Isi respons berisi hasil API, jika ada hasilnya.
  • Kode status HTTP 202 Diterima - Isi respons kosong.

Tiga penanda respons secara otomatis ditambahkan oleh infrastruktur LRO.

  • Location header: Berisi URL untuk memeriksa status operasi.
  • x-ms-operation-id header: Berisi ID operasi, yang dapat digunakan untuk membuat URL status operasi.
  • Retry-After header: Berisi bilangan bulat yang mewakili jumlah detik yang harus ditunggu pemanggil sebelum mengkueri status operasi.

Melakukan polling terhadap status dan mendapatkan hasil

Ada dua pendekatan yang dapat Anda ambil untuk melakukan polling pada keadaan dan mendapatkan hasilnya setelah operasi selesai.

  • Menggunakan header lokasi: header lokasi yang dikembalikan, selama operasi berjalan, adalah API Get Operation State dengan ID operasi dari operasi yang sedang berlangsung. Setelah operasi selesai berjalan, header lokasi yang dikembalikan adalah Get Operation Result API dengan ID operasi dan hasilnya.

  • Menggunakan x-ms-operation-id: Anda dapat membangun panggilan API yang kembali di header operasi menggunakan header x-ms-operation-id yang dikembalikan dalam respons panggilan awal. Tarik status dengan Get Operation State API, menggunakan ID operasi, dan dapatkan hasilnya dengan Get Operation Result API (menggunakan ID operasi).

Sampel kode C# untuk pemantauan status operasi

// Get operationUrl from location header or by building it with operation ID and Get State API.  
do 
{ 
  Thread.Sleep(retryAfter * 1000); // Get retryAfter value from Retry-After header. 
  response = client.GetAsync(operationUrl).Result;  
  jsonOperation = response.Content.ReadAsStringAsync().Result; 
  operation = JsonSerializer.Deserialize<FabricOperation>(jsonOperation); 
} while (operation.status != "Succeeded" && operation.status != "Failed"); 

Contoh pembuatan item

Ini adalah contoh operasi LRO. Dalam contoh ini pengguna membuat dua buku catatan.

Tahap 1: Membuat dua buku catatan

Buat dua buku catatan.

Tahap 2: Periksa buku catatan

Polling pembuatan buku catatan menggunakan Dapatkan Status Operasi.

Notebook 1 - Mengembalikan 201. Operasi selesai.

{ 
  "id": "551e6a4d-d81a-4079-b08c-25cec3cebba9", 
  "type": "Notebook", 
  "displayName": "Notebook1", 
  "description": "", 
  "workspaceId": "a91e61ef-862e-4611-9d09-9c7cc07b2519" 
} 

Notebook 2 - Mengembalikan 202. Operasi belum selesai. Notebook 2 belum dibuat.

{ 
"status": "Running", 
"createdTimeUtc": "2023-11-13T22:24:40.477Z", 
"lastUpdatedTimeUtc": "2023-11-13T22:24:41.532Z", 
"percentComplete": 25 
} 

Tahap 3: Buku Catatan Pemungutan Suara 2

Tunggu 20 menit lalu periksa notebook 2 menggunakan untuk mendapatkan Status Operasi.

DAPATKAN https://api.fabric.microsoft.com/v1/operations/b80e135a-adca-42e7-aaf0-59849af2ed78

Notebook 2 - Mengembalikan 201. Operasi selesai. Notebook 2 dibuat.

Operasi selesai - mendapat kode status http 200-OK. Isi respons:

{ 
  "status": "Succeeded", 
  "createdTimeUtc": "2023-11-13T22:25:06.1193103", 
  "lastUpdatedTimeUtc": "2023-11-13T22:25:09.0255787", 
  "percentComplete": 100, 
  "error": null 
} 

Tahap 4: Dapatkan hasil operasi notebook 2

Dapatkan hasil operasi untuk notebook 2 dengan Dapatkan Hasil Operasi.

DAPATKAN https://api.fabric.microsoft.com/v1/operations/b80e135a-adca-42e7-aaf0-59849af2ed78/result

Notebook 2 - Mengembalikan 200. Notebook 2 dibuat.

{ 
"id": "221a6eea-0f27-41eb-bcc5-e4d7b216ed43", 
"type": "Notebook", 
"displayName": " Notebook2", 
"description": "", 
"workspaceId": "a91e61ef-862e-4611-9d09-9c7cc07b2519" 
}