Λειτουργίες μεγάλης διάρκειας
Μια λειτουργία μεγάλης διάρκειας (LRO) είναι μια ασύγχρονη χρονοβόρα εργασία που επιτρέπει ασύγχρονη ανίχνευση, διατηρώντας παράλληλα την ανταπόκριση και την επεκτασιμότητα. Η ανίχνευση αναφέρεται στο μοτίβο προγράμματος-πελάτη που απαιτείται για τον περιοδικό έλεγχο της κατάστασης της λειτουργίας μέχρι να ολοκληρωθεί η λειτουργία.
Στο πλαίσιο των υπηρεσιών web και των API, οι LROs αναφέρονται σε εργασίες ή διαδικασίες που απαιτούν σημαντικό χρονικό διάστημα για την εκτέλεσή τους, καθιστώντας τα LROs ακατάλληλα για άμεση ολοκλήρωση εντός ενός μοναδικού κύκλου αίτησης-απόκρισης.
Παραδείγματα αυτών των λειτουργιών είναι οι αποστολές μεγάλων δεδομένων, οι σύνθετοι υπολογισμοί, η επεξεργασία δέσμης ή η προμήθεια πόρων σε περιβάλλοντα cloud. Δεν έχουν όλες οι λειτουργίες μεγάλης διάρκειας αποτέλεσμα στο Fabric. Ορισμένες λειτουργίες απλώς εκτελούνται μέχρι την ολοκλήρωσή τους χωρίς να παρέχουν διεύθυνση URL αποτελέσματος.
Προδιαγραφή API
Ένα API που χρησιμοποιεί την υποδομή LRO επιστρέφει ένα από τα δύο επιτυχημένα αποτελέσματα:
- ΚΩΔΙΚΌς κατάστασης HTTP 200 OK ή 201 CREATED - Το σώμα της απόκρισης περιέχει το αποτέλεσμα API, εάν υπάρχει ένα αποτέλεσμα.
- Κωδικός κατάστασης HTTP 202 Έγινε αποδοχή - Το σώμα της απόκρισης είναι κενό.
Τρεις κεφαλίδες απόκρισης προστίθενται αυτόματα από την υποδομή LRO:
-
Location header
: Περιέχει τη διεύθυνση URL για την ανίχνευση της κατάστασης της λειτουργίας. -
x-ms-operation-id header
: Περιέχει το αναγνωριστικό λειτουργίας, το οποίο μπορεί να χρησιμοποιηθεί για τη δημιουργία της διεύθυνσης URL κατάστασης λειτουργίας. -
Retry-After header
: Περιέχει έναν ακέραιο που αντιπροσωπεύει τον αριθμό των δευτερολέπτων που θα πρέπει να περιμένει ένας καλών πριν από την υποβολή ερωτημάτων για την κατάσταση της λειτουργίας.
Ανίχνευση κατάστασης και λήψη αποτελέσματος
Υπάρχουν δύο προσεγγίσεις που μπορείτε να λάβετε για ανίχνευση κατάστασης και λήψη του αποτελέσματος μόλις ολοκληρωθεί η λειτουργία:
Χρησιμοποιώντας κεφαλίδα τοποθεσίας: η κεφαλίδα θέσης που επιστρέφεται, ενώ εκτελείται η λειτουργία, είναι το API Κατάστασης λήψης λειτουργίας με το αναγνωριστικό λειτουργίας για τη λειτουργία που βρίσκεται σε εξέλιξη. Όταν η λειτουργία ολοκληρωθεί, η κεφαλίδα θέσης που επιστρέφεται είναι το API Λήψη αποτελέσματος λειτουργίας με το αναγνωριστικό λειτουργίας και το αποτέλεσμα.
Χρησιμοποιώντας x-ms-operation-id: μπορείτε να δημιουργήσετε κλήσεις API που επιστρέφουν στην κεφαλίδα της λειτουργίας, χρησιμοποιώντας την κεφαλίδα x-ms-operation-id που επιστρέφεται στην απόκριση της αρχικής κλήσης. Τραβήξτε την κατάσταση με το API Λήψη κατάστασης λειτουργίας, χρησιμοποιώντας το αναγνωριστικό λειτουργίας και λάβετε το αποτέλεσμα με το API Αποτελέσματος λήψης λειτουργίας (χρησιμοποιώντας το αναγνωριστικό λειτουργίας).
C# δείγμα κώδικα για ανίχνευση της κατάστασης λειτουργίας
// 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");
Παράδειγμα δημιουργίας στοιχείου
Αυτό είναι ένα παράδειγμα μιας λειτουργίας LRO. Σε αυτό το παράδειγμα, ο χρήστης δημιούργησε δύο σημειωματάρια.
Στάδιο 1: Δημιουργία δύο σημειωματάριων
Δημιουργήστε δύο σημειωματάρια.
Στάδιο 2: Δημοσκόπηση των σημειωματάριων
Κάντε δημοσκόπηση της αποτέφρωσης του σημειωματάριου χρησιμοποιώντας λήψη κατάστασης λειτουργίας.
Notebook 1 - Επιστρέφει 201
. Η λειτουργία ολοκληρώθηκε.
{
"id": "551e6a4d-d81a-4079-b08c-25cec3cebba9",
"type": "Notebook",
"displayName": "Notebook1",
"description": "",
"workspaceId": "a91e61ef-862e-4611-9d09-9c7cc07b2519"
}
Notebook 2 - Επιστρέφει 202
. Η λειτουργία δεν έχει ολοκληρωθεί. Το σημειωματάριο 2 δεν δημιουργείται.
{
"status": "Running",
"createdTimeUtc": "2023-11-13T22:24:40.477Z",
"lastUpdatedTimeUtc": "2023-11-13T22:24:41.532Z",
"percentComplete": 25
}
Στάδιο 3: Σημειωματάριο δημοσκόπησης 2
Περιμένετε 20 λεπτά και, στη συνέχεια, κάντε δημοσκόπηση του σημειωματάριου 2 χρησιμοποιώντας λήψη κατάστασης λειτουργίας.
GET https://api.fabric.microsoft.com/v1/operations/b80e135a-adca-42e7-aaf0-59849af2ed78
Notebook 2 - Επιστρέφει 201
. Η λειτουργία ολοκληρώθηκε. Το Σημειωματάριο 2 δημιουργείται.
Η λειτουργία ολοκληρώθηκε - λάβατε τον κωδικό κατάστασης http 200-OK. Σώμα απόκρισης:
{
"status": "Succeeded",
"createdTimeUtc": "2023-11-13T22:25:06.1193103",
"lastUpdatedTimeUtc": "2023-11-13T22:25:09.0255787",
"percentComplete": 100,
"error": null
}
Στάδιο 4: Λήψη αποτελέσματος λειτουργίας σημειωματάριου 2
Λάβετε το αποτέλεσμα της λειτουργίας για το σημειωματάριο 2 με αποτελεσμάτων λειτουργίας .
GET https://api.fabric.microsoft.com/v1/operations/b80e135a-adca-42e7-aaf0-59849af2ed78/result
Notebook 2 - Επιστρέφει 200
. Το Σημειωματάριο 2 δημιουργείται.
{
"id": "221a6eea-0f27-41eb-bcc5-e4d7b216ed43",
"type": "Notebook",
"displayName": " Notebook2",
"description": "",
"workspaceId": "a91e61ef-862e-4611-9d09-9c7cc07b2519"
}