Tutorial: Nutzen der dynamischen Konfiguration per Pushaktualisierung in einer Java Spring-App

Die Java Spring-Clientbibliothek von App Configuration unterstützt die bedarfsgesteuerte Aktualisierung der Konfigurationseinstellungen, ohne dass eine Anwendung neu gestartet werden muss. Eine Anwendung kann mit einem oder beiden der folgenden Ansätze so konfiguriert werden, dass App Configuration-Änderungen erkannt werden.

  • Abrufmodell: Dies ist das Standardverhalten, bei dem Änderungen an der Konfiguration per Abruf erkannt werden. Nachdem der zwischengespeicherte Wert einer Einstellung abgelaufen ist, wird beim nächsten Aufruf von refreshConfigurations für AppConfigurationRefresh eine Anforderung an den Server gesendet, um zu überprüfen, ob sich die Konfiguration geändert hat. Bei Bedarf wird dann die aktualisierte Konfiguration gepullt.

  • Pushmodell: Hierbei werden App Configuration-Ereignisse verwendet, um Änderungen an der Konfiguration zu erkennen. Nachdem für App Configuration das Senden von Ereignissen zu Schlüsselwertänderungen mit Event Grid und einem Webhook eingerichtet wurde, können diese Ereignisse von der Anwendung genutzt werden, um die Gesamtzahl von Anforderungen zu optimieren, mit denen die Konfiguration auf dem aktuellen Stand gehalten werden kann.

In diesem Tutorial wird veranschaulicht, wie Sie dynamische Konfigurationsupdates in Ihrem Code per Pushaktualisierung implementieren können. Dies baut auf der App auf, die in den Schnellstartanleitungen vorgestellt wurde. Arbeiten Sie zunächst Schnellstart: Erstellen einer Java Spring-App mit Azure App Configuration durch, bevor Sie fortfahren.

Für die Ausführung der Schritte dieses Tutorials können Sie einen beliebigen Code-Editor verwenden. Visual Studio Code ist eine hervorragende Option, die auf Windows-, macOS- und Linux-Plattformen verfügbar ist.

In diesem Tutorial lernen Sie Folgendes:

  • Einrichten eines Abonnements zum Senden von Ereignissen zu Konfigurationsänderungen von App Configuration an einen Webhook
  • Bereitstellen einer Spring Boot-Anwendung in App Service
  • Einrichten Ihrer Java Spring-App für die Aktualisierung der Konfiguration als Reaktion auf Änderungen in App Configuration
  • Verwenden der aktuellen Konfiguration in Ihrer Anwendung

Voraussetzungen

Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

Einrichten der Pushaktualisierung

  1. Öffnen Sie die Datei pom.xml, und aktualisieren Sie sie mit den folgenden Abhängigkeiten:

    <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.8.0</version>
            <type>pom</type>
            <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. Richten Sie die App Service-Maven-Bereitstellung ein, damit die Anwendung über Maven in Azure App Service bereitgestellt werden kann.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. Öffnen Sie bootstrap.properties, und konfigurieren Sie Azure-App Konfigurations-Pushaktualisierung.

    # Azure App Configuration Properties
    spring.cloud.azure.appconfiguration.stores[0].connection-string= ${AppConfigurationConnectionString}
    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
    

Eine zufällige Verzögerung wird hinzugefügt, bevor der zwischengespeicherte Wert als geändert gekennzeichnet wird, um eine potenzielle Drosselung zu reduzieren. Die maximale Standardverzögerung vor der Kennzeichnung des zwischengespeicherten Werts als geändert beträgt 30 Sekunden.

Hinweis

Der Name des primären Tokens sollte in App Configuration als Schlüssel gespeichert werden. Anschließend sollte das primäre Tokengeheimnis als Key Vault-Verweise von App Configuration gespeichert werden, um die Sicherheit zu erhöhen.

Erstellen und Ausführen der App im App-Dienst

Event Grid-Webhooks müssen bei der Erstellung überprüft werden. Führen Sie die Überprüfung anhand der Anweisungen in diesem Leitfaden durch, oder starten Sie Ihre Anwendung mit bereits konfigurierter Spring-Webbibliothek von Azure App Configuration. Dadurch wird die Anwendung für Sie registriert. Wenn Sie ein Ereignisabonnement verwenden möchten, führen Sie die Schritte in den nächsten beiden Abschnitten aus.

  1. Legen Sie die Umgebungsvariable auf die Verbindungszeichenfolge Ihrer App Configuration-Instanz fest:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Aktualisieren Sie Ihre pom.xml unter „Hinzufügen der configuration von azure-webapp-maven-plugin

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Führen Sie den folgenden Befehl aus, um die Konsolen-App zu erstellen:

     mvn package
    
  4. Führen Sie nach der erfolgreichen Erstellung den folgenden Befehl aus, um die App lokal auszuführen:

    mvn azure-webapp:deploy
    

Einrichten eines Ereignisabonnements

  1. Öffnen Sie die App Configuration-Ressource im Azure-Portal, und klicken Sie anschließend im Bereich Events (Ereignisse) auf + Event Subscription (+ Ereignisabonnement).

    The events pane has an option to create new Subscriptions.

  2. Geben Sie einen Namen für Event Subscription (Ereignisabonnement) und System Topic (Systemthema) ein. Standardmäßig werden die Ereignistypen „Key-Value modified“ (Schlüssel-Wert-Paar geändert) und „Key-Value deleted“ (Schlüssel-Wert-Paar gelöscht) festgelegt. Sie können diese Einstellung ändern und außerdem auf der Registerkarte „Filter“ die genauen Gründe für das Senden eines Pushereignisses auswählen.

    Events require a name, topic, and filters.

  3. Wählen Sie unter Endpoint Type die Option Web Hook und dann Select an endpoint aus.

    Selecting Endpoint creates a new blade to enter the endpoint URI.

  4. Der Endpunkt setzt sich aus dem URI der Anwendung und der Zeichenfolge „/actuator/appconfiguration-refresh?{IhrTokenname}={IhrTokengeheimnis}“ zusammen. Beispiel: https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Klicken Sie auf Create (Erstellen), um das Ereignisabonnement zu erstellen. Wenn Create ausgewählt ist, wird eine Registrierungsanforderung für den Webhook an Ihre Anwendung gesendet. Diese wird von der Azure App Configuration-Clientbibliothek empfangen und überprüft, und es wird eine gültige Antwort zurückgegeben.

  6. Klicken Sie im Bereich Events (Ereignisse) auf Event Subscriptions (Ereignisabonnements), um sich zu vergewissern, dass die Erstellung des Abonnements erfolgreich war.

    Web Hook shows up in a table on the bottom of the page.

Hinweis

Beim Abonnieren von Konfigurationsänderungen können ein oder mehrere Filter genutzt werden, um die Anzahl von Ereignissen zu reduzieren, die an Ihre Anwendung gesendet werden. Diese können entweder als Event Grid-Abonnementfilter konfiguriert werden. Beispielsweise kann ein Abonnementfilter nur verwendet werden, um Ereignisse zu Änderungen in einem Schlüssel zu abonnieren, der mit einer bestimmten Zeichenfolge beginnt.

Hinweis

Wenn mehrere Instanzen Ihrer Anwendung ausgeführt werden, können Sie den appconfiguration-refresh-bus Endpunkt verwenden, der das Einrichten von Azure Service Bus erfordert, der verwendet wird, um eine Nachricht an alle Instanzen Ihrer Anwendung zu senden, um ihre Konfiguration zu aktualisieren. Dies ist nützlich, wenn Sie mehrere Instanzen Ihrer Anwendung ausführen und sicherstellen möchten, dass alle Instanzen mit der neuesten Konfiguration aktualisiert werden. Dieser Endpunkt ist nicht verfügbar, es sei denn, Sie haben spring-cloud-bus eine Abhängigkeit davon konfiguriert. Weitere Informationen finden Sie in der Dokumentation zu Azure Service Bus Spring Cloud Bus. Die Servicebusverbindung muss nur eingerichtet werden, und die Azure-App Konfigurationsbibliothek verarbeitet das Senden und Empfangen der Nachrichten.

Überprüfen und Testen der Anwendung

  1. Nachdem Ihre Anwendung ausgeführt wird, testen Sie sie mit cURL. Beispiel:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Öffnen Sie das Azure-Portal, und navigieren Sie zu der App Configuration-Ressource, die Ihrer Anwendung zugeordnet ist. Wählen Sie unter Vorgänge die Option Konfigurations-Explorer aus, und aktualisieren Sie die Werte der folgenden Schlüssel:

    Schlüssel Wert
    application/config.message Hello - Updated
  3. Aktualisieren Sie die Browserseite, um die neue Nachricht anzuzeigen.

Bereinigen von Ressourcen

Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
  2. Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
  3. Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  5. Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.

Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.

Nächste Schritte

In diesem Tutorial haben Sie Ihre Java-App aktiviert, um Konfigurationseinstellungen aus App Configuration dynamisch zu aktualisieren. Weitere Fragen finden Sie in der Referenzdokumentation. Sie enthält alle Details zur Funktionsweise der Spring Cloud Azure App Configuration-Bibliothek. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie eine von Azure verwaltete Identität hinzufügen, um den Zugriff auf App Configuration zu optimieren.