Udostępnij za pośrednictwem


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.