Implementowanie zasad ponawiania za pomocą języka Java
Każda aplikacja, która działa w chmurze lub komunikuje się z usługami zdalnymi i zasobami, musi mieć możliwość obsługi błędów przejściowych. Te aplikacje często występują błędy z powodu chwilowej utraty łączności sieciowej, przekroczenia limitu czasu żądania, gdy usługa lub zasób jest zajęta lub inne czynniki. Deweloperzy powinni tworzyć aplikacje do obsługi błędów przejściowych w sposób niewidoczny, aby poprawić stabilność i odporność.
Z tego artykułu dowiesz się, jak używać biblioteki klienta usługi Azure Storage dla języka Java do konfigurowania zasad ponawiania dla aplikacji łączącej się z usługą Azure Blob Storage. Zasady ponawiania prób definiują sposób obsługi żądań niepowodzeń przez aplikację i powinny być zawsze dostosowane do wymagań biznesowych aplikacji i charakteru awarii.
Konfigurowanie opcji ponawiania prób
Zasady ponawiania prób dla usługi Blob Storage są konfigurowane programowo, co zapewnia kontrolę nad sposobem stosowania opcji ponawiania prób do różnych żądań obsługi i scenariuszy. Na przykład aplikacja internetowa wydająca żądania na podstawie interakcji użytkownika może implementować zasady z mniejszą liczbą ponownych prób i krótszymi opóźnieniami w celu zwiększenia czasu reakcji i powiadamiania użytkownika o wystąpieniu błędu. Alternatywnie aplikacja lub składnik uruchamiając żądania wsadowe w tle może zwiększyć liczbę ponownych prób i użyć strategii wycofywania wykładniczego, aby umożliwić pomyślne zakończenie żądania.
W poniższej tabeli wymieniono parametry dostępne podczas konstruowania wystąpienia RequestRetryOptions wraz z typem, krótkim opisem i wartością domyślną, jeśli nie wprowadzisz żadnych zmian. Należy aktywnie dostrajać wartości tych właściwości, aby spełniały potrzeby aplikacji.
Właściwość | Type | Opis | Domyślna wartość |
---|---|---|---|
retryPolicyType |
RetryPolicyType | Opcjonalny. Podejście do obliczania opóźnień ponawiania prób. | WYKŁADNICZY |
maxTries |
Integer | Opcjonalny. Maksymalna liczba ponownych prób przed rezygnacją. | 100 |
tryTimeoutInSeconds |
Integer | Opcjonalny. Maksymalny czas dozwolony przed anulowaniem żądania i założeniem, że nie powiodło się. Należy pamiętać, że limit czasu dotyczy żądania operacji, a nie całkowitego zakończenia operacji. Ta wartość powinna być oparta na przepustowości dostępnej dla maszyny hosta i w pobliżu usługi Storage. Dobrym punktem wyjścia może być 60 sekund na MB przewidywanego rozmiaru ładunku. | Integer.MAX_VALUE (w sekundach) |
retryDelayInMs |
Długi | Opcjonalny. Określa ilość opóźnienia do użycia przed ponowną próbą wykonania operacji. | 4ms dla EXPONENTIAL, 30ms for FIXED |
maxRetryDelayInMs |
Długi | Opcjonalny. Określa maksymalne opóźnienie dozwolone przed ponowieniu próby wykonania operacji. | 120 ms |
secondaryHost |
String | Opcjonalny. Pomocniczy punkt końcowy konta magazynu w celu ponawiania żądań. Przed ustawieniem tej wartości należy zrozumieć problemy związane z odczytywaniem nieaktualnych i potencjalnie niespójnych danych. Aby dowiedzieć się więcej, zobacz Projektowanie aplikacji o wysokiej dostępności przy użyciu nadmiarowości geograficznej. | Brak |
W poniższym przykładzie kodu skonfigurujemy opcje ponawiania w wystąpieniu elementu RequestRetryOptions i przekażemy je do BlobServiceClientBuilder
utworzenia obiektu klienta:
RequestRetryOptions retryOptions = new RequestRetryOptions(RetryPolicyType.FIXED, 2, 3, 1000L, 1500L, null);
BlobServiceClient client = new BlobServiceClientBuilder()
.endpoint("https://<storage-account-name>.blob.core.windows.net/")
.credential(credential)
.retryOptions(retryOptions)
.buildClient();
W tym przykładzie BlobServiceClient
każde żądanie obsługi wystawione z obiektu używa opcji ponawiania zgodnie z definicją w wystąpieniu RequestRetryOptions
. Te zasady dotyczą żądań klientów. Można skonfigurować różne strategie ponawiania prób dla klientów usług na podstawie potrzeb aplikacji.
Następne kroki
- Ten artykuł jest częścią przewodnika dla deweloperów usługi Blob Storage dla języka Java. Zobacz pełną listę artykułów z przewodnika dla deweloperów na stronie Tworzenie aplikacji.
- Aby uzyskać wskazówki dotyczące architektury i ogólne najlepsze rozwiązania dotyczące zasad ponawiania prób, zobacz Obsługa błędów przejściowych.
- Aby uzyskać wskazówki dotyczące implementowania wzorca ponawiania prób dla błędów przejściowych, zobacz Wzorzec ponawiania prób.