Freigeben über


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 die Azure App Configuration-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 wählen Sie dann im Bereich Events die Option + Event Subscription aus.

    Der Ereignisbereich enthält eine Option zum Erstellen neuer Abonnements.

  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.

    Für Ereignisse müssen ein Name, ein Thema und Filter angegeben werden.

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

    Durch Auswählen der Option unter „Endpunkt“ wird ein neues Blatt zur Eingabe des Endpunkt-URI erstellt.

  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. Wählen Sie Create aus, 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. Wählen Sie im Bereich Events die Option Event Subscriptions aus, um sich zu vergewissern, dass das Abonnement erfolgreich erstellt wurde.

    Webhook in einer Tabelle am unteren Seitenrand

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 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 Endpunkt appconfiguration-refresh-bus verwenden. Dazu müssen Sie Azure Service Bus einrichten, um eine Nachricht an alle Instanzen Ihrer Anwendung zum Aktualisieren ihrer Konfiguration zu senden. 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, sofern Sie spring-cloud-bus nicht als Abhängigkeit konfiguriert haben. Weitere Informationen finden Sie in der Dokumentation zu Azure Service Bus Spring Cloud. Die Service Bus-Verbindung muss nur eingerichtet werden. Die Azure App Configuration-Bibliothek übernimmt dann 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.