Omówienie rozwiązywania problemów z zestawem Azure SDK dla języka Java
W tym artykule przedstawiono wiele narzędzi do rozwiązywania problemów dostępnych podczas korzystania z zestawu Azure SDK dla języka Java oraz linki do innych artykułów z dodatkowymi szczegółami.
Zestaw Azure SDK dla języka Java składa się z wielu bibliotek klienckich — co najmniej jednej dla każdej usługi platformy Azure, która istnieje. Upewniamy się, że wszystkie biblioteki klienckie są tworzone zgodnie ze spójnym, wysokim standardem z typowymi wzorcami konfiguracji, rejestrowania, obsługi wyjątków i rozwiązywania problemów. Aby uzyskać więcej informacji, zobacz Korzystanie z zestawu Azure SDK dla języka Java.
Ponieważ rozwiązywanie problemów może obejmować tak szeroki obszar tematów, opracowaliśmy następujące przewodniki rozwiązywania problemów, które warto przejrzeć:
- Rozwiązywanie problemów z uwierzytelnianiem tożsamości platformy Azure obejmuje techniki badania błędów uwierzytelniania , typowe błędy typów poświadczeń w bibliotece klienta Java tożsamości platformy Azure oraz kroki ograniczania ryzyka w celu rozwiązania tych błędów.
- Rozwiązywanie konfliktów wersji zależności obejmuje tematy związane z diagnozowaniem, ograniczaniem i minimalizowaniem konfliktów zależności. Te konflikty mogą wystąpić, gdy używasz zestawu Azure SDK dla bibliotek klienckich Języka Java w systemach, które są kompilowane przy użyciu narzędzi takich jak Maven i Gradle.
- Rozwiązywanie problemów z siecią obejmuje tematy związane z debugowaniem HTTP poza biblioteką klienta przy użyciu narzędzi takich jak Fiddler i Wireshark.
Wraz z tymi ogólnymi przewodnikami rozwiązywania problemów udostępniamy również przewodniki rozwiązywania problemów specyficzne dla biblioteki. W tej chwili dostępne są następujące przewodniki:
- Rozwiązywanie problemów z usługą Azure Event Hubs
- Rozwiązywanie problemów z usługą Azure Service Bus
Poza tymi dokumentami poniższa zawartość zawiera wskazówki dotyczące najlepszego wykorzystania rejestrowania i obsługi wyjątków w odniesieniu do zestawu Azure SDK dla języka Java.
Korzystanie z rejestrowania w zestawie Azure SDK dla języka Java
W poniższych sekcjach opisano sposób włączania różnych rodzajów rejestrowania.
Włączanie rejestrowania klientów
Aby rozwiązać problemy, należy najpierw włączyć rejestrowanie w celu monitorowania zachowania aplikacji. Błędy i ostrzeżenia w dziennikach zwykle zapewniają przydatne informacje o tym, co poszło nie tak, a czasami obejmują akcje naprawcze w celu rozwiązania problemów. Zestaw Azure SDK dla języka Java ma kompleksową obsługę rejestrowania. Aby uzyskać więcej informacji, zobacz Konfigurowanie rejestrowania w zestawie Azure SDK dla języka Java.
Włączanie rejestrowania żądań HTTP/odpowiedzi
Podczas rozwiązywania problemów warto przejrzeć żądania HTTP podczas ich wysyłania i odbierania między usługami platformy Azure. Aby włączyć rejestrowanie ładunku żądania HTTP i ładunku odpowiedzi, możesz skonfigurować prawie wszystkie biblioteki klienckie zestawu Azure SDK dla języka Java w konstruktorach klientów, jak pokazano w poniższym przykładzie. W szczególności należy zwrócić szczególną uwagę na httpLogOptions
metodę konstruktora klienta i wartości wyliczenia dostępne w HttpLogDetailLevel
pliku .
ConfigurationClient configurationClient = new ConfigurationClientBuilder()
.connectionString(connectionString)
.httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
.buildClient();
Ten kod zmienia rejestrowanie żądań HTTP/odpowiedzi dla pojedynczego wystąpienia klienta. Alternatywnie można skonfigurować rejestrowanie żądań HTTP i odpowiedzi dla całej aplikacji, ustawiając AZURE_HTTP_LOG_DETAIL_LEVEL
zmienną środowiskową na jedną z wartości w poniższej tabeli. Należy pamiętać, że ta zmiana umożliwia rejestrowanie dla każdego klienta platformy Azure obsługującego rejestrowanie żądania/odpowiedzi HTTP.
Wartość | Poziom rejestrowania |
---|---|
none |
Rejestrowanie żądań HTTP/odpowiedzi jest wyłączone. |
basic |
Rejestruje tylko adresy URL, metody HTTP i czas zakończenia żądania. |
headers |
Rejestruje wszystkie elementy w warstwie PODSTAWOWA oraz wszystkie nagłówki żądań i odpowiedzi. |
body |
Rejestruje wszystko w warstwie PODSTAWOWA oraz całą treść żądania i odpowiedzi. |
body_and_headers |
Rejestruje wszystko w nagłówkach i treści. |
Uwaga
Podczas rejestrowania żądań i treści odpowiedzi upewnij się, że nie zawierają informacji poufnych. Podczas rejestrowania parametrów zapytania i nagłówków biblioteka klienta ma domyślny zestaw parametrów zapytania i nagłówków, które są uważane za bezpieczne do rejestrowania. Istnieje możliwość dodania dodatkowych parametrów zapytania i nagłówków, które są bezpieczne do rejestrowania, jak pokazano w poniższym przykładzie:
clientBuilder.httpLogOptions(new HttpLogOptions()
.addAllowedHeaderName("safe-to-log-header-name")
.addAllowedQueryParamName("safe-to-log-query-parameter-name"))
Obsługa wyjątków w zestawie Azure SDK dla języka Java
Większość metod usługi klienta zestawu Azure SDK dla języka Java zgłasza wyjątek HttpResponseException lub bardziej szczegółową podklasę w przypadku awarii. Typ HttpResponseException
zawiera szczegółowy obiekt błędu odpowiedzi, który zapewnia konkretny przydatny wgląd w to, co poszło nie tak i zawiera akcje naprawcze w celu rozwiązania typowych problemów. Te informacje o błędzie można znaleźć wewnątrz właściwości komunikatu HttpResponseException
obiektu. Ponieważ te wyjątki są wyjątkami środowiska uruchomieniowego, dokumentacja referencyjna javaDoc nie wywołuje ich jawnie.
W poniższym przykładzie pokazano, jak przechwycić ten wyjątek za pomocą klienta synchronicznego:
try {
ConfigurationSetting setting = new ConfigurationSetting().setKey("myKey").setValue("myValue");
client.getConfigurationSetting(setting);
} catch (HttpResponseException e) {
System.out.println(e.getMessage());
// Do something with the exception
}
W przypadku klientów asynchronicznych można przechwytywać wyjątki i obsługiwać je w wywołaniach zwrotnych błędów, jak pokazano w poniższym przykładzie:
ConfigurationSetting setting = new ConfigurationSetting().setKey("myKey").setValue("myValue");
asyncClient.getConfigurationSetting(setting)
.doOnSuccess(ignored -> System.out.println("Success!"))
.doOnError(
error -> error instanceof ResourceNotFoundException,
error -> System.out.println("Exception: 'getConfigurationSetting' could not be performed."));
Używanie śledzenia w zestawie Azure SDK dla języka Java
Zestaw Azure SDK dla języka Java oferuje kompleksową obsługę śledzenia, umożliwiając wyświetlanie przepływu wykonywania za pomocą kodu aplikacji i używanych bibliotek klienckich. Śledzenie w bibliotekach klienta platformy Azure można włączyć przy użyciu zestawu SDK openTelemetry lub przy użyciu agenta zgodnego z biblioteką OpenTelemetry. OpenTelemetry to popularna platforma do obserwacji typu open source do generowania, przechwytywania i zbierania danych telemetrycznych dla oprogramowania natywnego dla chmury.
Aby uzyskać więcej informacji na temat włączania śledzenia w zestawie Azure SDK dla języka Java, zobacz Konfigurowanie śledzenia w zestawie Azure SDK dla języka Java.
Następne kroki
Jeśli wskazówki dotyczące rozwiązywania problemów w tym artykule nie pomogą rozwiązać problemów podczas korzystania z bibliotek klienckich zestawu Azure SDK dla języka Java, zalecamy zgłoszenie problemuw repozytorium GitHub zestawu Azure SDK dla języka Java.