Udostępnij za pośrednictwem


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 AppConfigurationRefreshrefreshConfigurations 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

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Konfigurowanie odświeżania wypychanych

  1. 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>
  1. 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
    
  2. Przejdź do resources katalogu aplikacji i otwórz bootstrap.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ąc spring.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.

  1. 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.


  2. Zaktualizuj element pom.xml w obszarze azure-webapp-maven-plugindodawania configuration

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Uruchom następujące polecenie, aby skompilować aplikację konsolową:

     mvn package
    
  4. Po pomyślnym zakończeniu kompilacji uruchom następujące polecenie, aby uruchomić aplikację lokalnie:

    mvn azure-webapp:deploy
    

Konfigurowanie subskrypcji zdarzeń

  1. Otwórz zasób App Configuration w witrynie Azure Portal, a następnie wybierz w + Event Subscription okienku Events .

    Okienko zdarzeń ma możliwość utworzenia nowych subskrypcji.

  2. Wprowadź nazwę elementu Event Subscription i System 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.

    Zdarzenia wymagają nazwy, tematu i filtrów.

  3. Wybierz element Endpoint Type jako Web Hook, wybierz pozycję Select an endpoint.

    Wybranie pozycji Punkt końcowy powoduje utworzenie nowego bloku w celu wprowadzenia identyfikatora URI punktu końcowego.

  4. 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

  5. Wybierz Create , aby utworzyć subskrypcję zdarzeń. Po Create 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ź.

  6. Wybierz Event Subscriptions w okienku, Events aby sprawdzić, czy subskrypcja została utworzona pomyślnie.

    Element Web Hook jest wyświetlany w tabeli w dolnej części strony.

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

  1. Po uruchomieniu aplikacji użyj narzędzia curl , aby przetestować aplikację, na przykład:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. 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
  3. 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.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. 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.