Samouczek: używanie konfiguracji dynamicznej przy użyciu odświeżania wypychanego w aplikacji Java Spring
Biblioteka kliencka Java Spring usługi App Configuration obsługuje aktualizowanie konfiguracji na żądanie bez powodowania ponownego uruchomienia aplikacji. Aplikację można skonfigurować do wykrywania zmian w usłudze App Configuration przy użyciu jednego lub obu poniższych metod.
Model sondowania: Model sondowania jest domyślnym zachowaniem, które używa sondowania do wykrywania zmian w konfiguracji. Po wygaśnięciu buforowanej wartości ustawienia następne wywołanie
AppConfigurationRefresh
refreshConfigurations
wysyła żądanie do serwera, aby sprawdzić, czy konfiguracja uległa zmianie, i w razie potrzeby ściąga zaktualizowaną konfigurację.Model wypychania: używa zdarzeń konfiguracji aplikacji do wykrywania zmian w konfiguracji. Po skonfigurowaniu usługi App Configuration w celu wysyłania zdarzeń zmiany wartości klucza za pomocą usługi Event Grid za pomocą elementu Web Hook aplikacja może użyć tych zdarzeń w celu zoptymalizowania łącznej liczby żądań wymaganych do zachowania aktualizacji konfiguracji.
W tym samouczku pokazano, jak wdrożyć aktualizacje dynamicznej konfiguracji w kodzie przy użyciu odświeżania wypychanych. Jest ona oparta na aplikacji wprowadzonej w przewodnikach Szybki start. Przed kontynuowaniem najpierw zakończ tworzenie aplikacji Java Spring za pomocą usługi App Configuration .
Aby wykonać kroki opisane w tym samouczku, możesz użyć dowolnego edytora kodu. Program Visual Studio Code to doskonała opcja dostępna na platformach Windows, macOS i Linux.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Konfigurowanie subskrypcji w celu wysyłania zdarzeń zmiany konfiguracji z usługi App Configuration do elementu Web Hook
- Wdrażanie aplikacji Spring Boot w usłudze App Service
- Skonfiguruj aplikację Java Spring, aby zaktualizować jej konfigurację w odpowiedzi na zmiany w usłudze App Configuration.
- Korzystanie z najnowszej konfiguracji w aplikacji.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz jedną bezpłatnie
- Obsługiwany zestaw Java Development Kit (JDK) w wersji 11.
- Apache Maven w wersji 3.0 lub nowszej.
- Istniejący magazyn konfiguracji aplikacja systemu Azure.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Konfigurowanie odświeżania wypychanych
- Otwórz pom.xml i zaktualizuj plik przy użyciu następujących zależności.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
</dependency>
<!-- Adds the Ability to Push Refresh -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.18.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Skonfiguruj wdrożenie usługi App Service programu Maven, aby można było wdrożyć aplikację w usłudze aplikacja systemu Azure za pośrednictwem narzędzia Maven.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
Przejdź do
resources
katalogu aplikacji i otwórzbootstrap.properties
i skonfiguruj aplikacja systemu Azure konfiguracja wypychania odświeżania. Jeśli plik nie istnieje, utwórz go. Dodaj następujący wiersz do pliku.Użyj polecenia
DefaultAzureCredential
, aby uwierzytelnić się w magazynie usługi App Configuration. Postępuj zgodnie z instrukcjami, aby przypisać poświadczenia roli Czytelnik danych konfiguracji aplikacji. Przed uruchomieniem aplikacji należy zezwolić na wystarczający czas na propagację uprawnień. Utwórz nowy plik o nazwie AppConfigCredential.java i dodaj następujące wiersze:spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT} spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled= true spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30d spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key= sentinel spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name= myToken spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret= myTokenSecret management.endpoints.web.exposure.include= appconfiguration-refresh
Ponadto należy dodać następujący kod do projektu, chyba że chcesz użyć tożsamości zarządzanej:
import org.springframework.stereotype.Component; import com.azure.data.appconfiguration.ConfigurationClientBuilder; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer; @Component public class AppConfigCredential implements ConfigurationClientCustomizer { @Override public void customize(ConfigurationClientBuilder builder, String endpoint) { builder.credential(new DefaultAzureCredentialBuilder().build()); } }
Dodaj konfigurację Bootstrap Configuration, tworząc plik w
resources/META-INF
katalogu i dodając następujące wiersze oraz aktualizującspring.factories
com.example.MyApplication
przy użyciu nazwy aplikacji i pakietu:org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.MyApplication
Opóźnienie losowe jest dodawane przed oznaczeniem buforowanej wartości jako zanieczyszczonej w celu zmniejszenia potencjalnego ograniczania przepustowości. Domyślne maksymalne opóźnienie, zanim buforowana wartość jest oznaczona jako zanieczyszczona, wynosi 30 sekund.
Uwaga
Nazwa podstawowego tokenu powinna być przechowywana w usłudze App Configuration jako klucz, a następnie klucz tajny podstawowego tokenu powinien być przechowywany jako dokumentacja usługi Key Vault usługi App Configuration w celu zapewnienia dodanych zabezpieczeń.
Kompilowanie i uruchamianie aplikacji w usłudze App Service
Elementy Web Hook usługi Event Grid wymagają weryfikacji podczas tworzenia. Możesz sprawdzić poprawność, wykonując czynności opisane w tym przewodniku lub uruchamiając aplikację przy użyciu skonfigurowanej już biblioteki internetowej aplikacja systemu Azure Configuration Spring, która rejestruje aplikację. Aby użyć subskrypcji zdarzeń, wykonaj kroki opisane w dwóch następnych sekcjach.
Ustaw zmienną środowiskową.
Ustaw zmienną środowiskową o nazwie APP_CONFIGURATION_ENDPOINT na punkt końcowy sklepu App Configuration znajdującego się w obszarze Przegląd sklepu w witrynie Azure Portal.
Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie i uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmian:
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
Jeśli używasz programu PowerShell, uruchom następujące polecenie:
$Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:
export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
Uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmiany. Wydrukuj wartość zmiennej środowiskowej, aby sprawdzić, czy jest ona ustawiona prawidłowo.
Zaktualizuj element
pom.xml
w obszarzeazure-webapp-maven-plugin
dodawaniaconfiguration
<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Uruchom następujące polecenie, aby skompilować aplikację konsolową:
mvn package
Po pomyślnym zakończeniu kompilacji uruchom następujące polecenie, aby uruchomić aplikację lokalnie:
mvn azure-webapp:deploy
Konfigurowanie subskrypcji zdarzeń
Otwórz zasób App Configuration w witrynie Azure Portal, a następnie wybierz w
+ Event Subscription
okienkuEvents
.Wprowadź nazwę elementu
Event Subscription
iSystem Topic
. Domyślnie ustawiane są zmodyfikowane typy zdarzeń klucz-wartość i usunięta wartość klucza, przyczynę można zmienić wraz z użyciem karty Filtry, aby wybrać dokładne przyczyny wysłania zdarzenia wypychania.Wybierz element
Endpoint Type
jakoWeb Hook
, wybierz pozycjęSelect an endpoint
.Punkt końcowy to identyfikator URI aplikacji + "/siłownik/appconfiguration-refresh? {nazwa-tokenu}={twój-token-secret}". Na przykład
https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret
Wybierz
Create
, aby utworzyć subskrypcję zdarzeń. PoCreate
wybraniu żądania rejestracji elementu Web Hook zostanie wysłane do aplikacji. Żądanie jest odbierane przez bibliotekę klienta aplikacja systemu Azure Configuration, zweryfikowane i zwraca prawidłową odpowiedź.Wybierz
Event Subscriptions
w okienku,Events
aby sprawdzić, czy subskrypcja została utworzona pomyślnie.
Uwaga
Podczas subskrybowania zmian konfiguracji można użyć co najmniej jednego filtru w celu zmniejszenia liczby zdarzeń wysyłanych do aplikacji. Można je skonfigurować jako filtry subskrypcji usługi Event Grid. Na przykład filtr subskrypcji może służyć tylko do subskrybowania zdarzeń pod kątem zmian w kluczu rozpoczynającym się od określonego ciągu.
Uwaga
Jeśli masz uruchomione wiele wystąpień aplikacji, możesz użyć appconfiguration-refresh-bus
punktu końcowego, który wymaga skonfigurowania usługi Azure Service Bus, który służy do wysyłania komunikatu do wszystkich wystąpień aplikacji w celu odświeżenia ich konfiguracji. Jest to przydatne, jeśli masz uruchomione wiele wystąpień aplikacji i chcesz upewnić się, że wszystkie wystąpienia są aktualizowane przy użyciu najnowszej konfiguracji. Ten punkt końcowy nie jest dostępny, chyba że masz spring-cloud-bus
skonfigurowaną zależność. Aby uzyskać więcej informacji, zobacz dokumentację usługi Azure Service Bus Spring Cloud Bus. Należy skonfigurować tylko połączenie usługi Service Bus, a biblioteka konfiguracji aplikacja systemu Azure będzie obsługiwać wysyłanie i odbieranie komunikatów.
Weryfikowanie i testowanie aplikacji
Po uruchomieniu aplikacji użyj narzędzia curl , aby przetestować aplikację, na przykład:
curl -X GET https://my-azure-webapp.azurewebsites.net
Otwórz witrynę Azure Portal i przejdź do zasobu usługi App Configuration skojarzonego z aplikacją. Wybierz pozycję Eksplorator konfiguracji w obszarze Operacje i zaktualizuj wartości następujących kluczy:
Key Wartość application/config.message Witaj — zaktualizowano Odśwież stronę przeglądarki, aby wyświetlić wyświetlony nowy komunikat.
Czyszczenie zasobów
Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.
- Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.
Następne kroki
W tym samouczku włączono aplikację Java w celu dynamicznego odświeżania ustawień konfiguracji z poziomu usługi App Configuration. Aby uzyskać więcej pytań, zobacz dokumentację referencyjną, zawiera ona wszystkie szczegółowe informacje na temat działania biblioteki konfiguracji spring cloud aplikacja systemu Azure. Aby dowiedzieć się, jak używać tożsamości zarządzanej platformy Azure w celu usprawnienia dostępu do usługi App Configuration, przejdź do następnego samouczka.