Esercitazione: Usare la configurazione dinamica usando l'aggiornamento push in un'app Java Spring

La libreria client Java Spring Configurazione app supporta l'aggiornamento della configurazione su richiesta senza causare il riavvio di un'applicazione. Un'applicazione può essere configurata per rilevare le modifiche in Configurazione app usando uno o entrambi i due approcci seguenti.

  • Modello di polling: comportamento predefinito che usa il polling per rilevare le modifiche nella configurazione. Una volta scaduto il valore memorizzato nella cache di un'impostazione, la chiamata successiva a AppConfigurationRefreshrefreshConfigurations invia una richiesta al server per verificare se la configurazione è stata modificata ed esegue il pull della configurazione aggiornata, se necessario.

  • Modello push: usa Configurazione app eventi per rilevare le modifiche nella configurazione. Dopo aver configurato Configurazione app per inviare eventi di modifica del valore della chiave con Griglia di eventi, con un web hook, l'applicazione può usare questi eventi per ottimizzare il numero totale di richieste necessarie per mantenere aggiornata la configurazione.

Questa esercitazione illustra come implementare gli aggiornamenti della configurazione dinamica nel codice usando l'aggiornamento push. Si basa sull'app presentata negli argomenti di avvio rapido. Prima di continuare, completare Creare un'app Java Spring con Configurazione app prima.

Per completare i passaggi riportati in questa esercitazione, è possibile usare qualsiasi editor di codice. Visual Studio Code è un'ottima opzione ed è disponibile per le piattaforme Windows, macOS e Linux.

In questa esercitazione apprenderai a:

  • Configurare una sottoscrizione per inviare eventi di modifica della configurazione da Configurazione app a un Web Hook
  • Distribuire un'applicazione Spring Boot in servizio app
  • Configurare l'app Java Spring per aggiornarne la configurazione in risposta alle modifiche in Configurazione app.
  • Utilizzare la configurazione più recente nell'applicazione.

Prerequisiti

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Installazione dell'aggiornamento push

  1. Aprire pom.xml e aggiornare il file con le dipendenze seguenti.

    <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. Configurare Maven servizio app Deployment in modo che l'applicazione possa essere distribuita nel servizio app Azure tramite Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. Aprire bootstrap.properties e configurare app Azure aggiornamento push della configurazione.

    # 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
    

Viene aggiunto un ritardo casuale prima che il valore memorizzato nella cache sia contrassegnato come dirty per ridurre la potenziale limitazione. Il ritardo massimo predefinito prima che il valore memorizzato nella cache sia contrassegnato come dirty è 30 secondi.

Nota

Il nome del token primario deve essere archiviato in Configurazione app come chiave e quindi il segreto del token primario deve essere archiviato come Configurazione app riferimento all'insieme di credenziali delle chiavi per una maggiore sicurezza.

Compilare ed eseguire l'app nel servizio app

Gli web hook di Griglia di eventi richiedono la convalida durante la creazione. È possibile eseguire la convalida seguendo questa guida o avviando l'applicazione con app Azure Configuration Spring Web Library già configurata, che registrerà automaticamente l'applicazione. Per usare una sottoscrizione di eventi, seguire la procedura descritta nelle due sezioni successive.

  1. Impostare la variabile di ambiente sul stringa di connessione dell'istanza di Configurazione app:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Aggiornare l'oggetto pom.xml sotto l'aggiunta azure-webapp-maven-plugindi configuration

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Eseguire il comando seguente per compilare l'app console:

     mvn package
    
  4. Al termine della compilazione, eseguire questo comando per eseguire l'app Web in locale:

    mvn azure-webapp:deploy
    

Configurare una sottoscrizione di eventi

  1. Aprire la risorsa Configurazione app nel portale di Azure, quindi fare clic sul + Event SubscriptionEvents riquadro.

    The events pane has an option to create new Subscriptions.

  2. Immettere un nome per Event Subscription e System Topic. Per impostazione predefinita, vengono impostati i tipi di evento Chiave-Valore modificato e Key-Value eliminato, che può essere modificato insieme all'uso della scheda Filtri per scegliere i motivi esatti per cui verrà inviato un evento push.

    Events require a name, topic, and filters.

  3. Endpoint Type Selezionare come Web Hook, selezionare Select an endpoint.

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

  4. L'endpoint è l'URI dell'applicazione + "/attuatore/appconfiguration-refresh? {your-token-name}={your-token-secret}". Ad esempio: https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Fare clic su Create per creare la sottoscrizione di eventi. Quando Create viene selezionata una richiesta di registrazione per Web Hook, verrà inviata all'applicazione. Questa operazione viene ricevuta dalla libreria client di configurazione app Azure, verificata e restituisce una risposta valida.

  6. Fare clic sul Event SubscriptionsEvents riquadro per verificare che la sottoscrizione sia stata creata correttamente.

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

Nota

Quando si sottoscrive le modifiche alla configurazione, è possibile usare uno o più filtri per ridurre il numero di eventi inviati all'applicazione. Questi possono essere configurati come filtri di sottoscrizione di Griglia di eventi. Ad esempio, un filtro di sottoscrizione può essere usato per sottoscrivere solo gli eventi per le modifiche in una chiave che inizia con una stringa specifica.

Nota

Se sono in esecuzione più istanze dell'applicazione, è possibile usare l'endpoint appconfiguration-refresh-bus che richiede la configurazione di bus di servizio di Azure, che viene usato per inviare un messaggio a tutte le istanze dell'applicazione per aggiornare la configurazione. Ciò è utile se si dispone di più istanze dell'applicazione in esecuzione e si vuole assicurarsi che tutte le istanze vengano aggiornate con la configurazione più recente. Questo endpoint non è disponibile a meno che non si disponga spring-cloud-bus di una dipendenza con essa configurata. Per altre informazioni, vedere la documentazione di bus di servizio di Azure Spring Cloud Bus. La connessione al bus di servizio deve essere configurata solo e la libreria di configurazione app Azure gestirà l'invio e la ricezione dei messaggi.

Verificare e testare l'applicazione

  1. Quando l'applicazione è in esecuzione, è possibile testarla usando curl, ad esempio:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Aprire il portale di Azure e passare alla risorsa Configurazione app associata all'applicazione. Selezionare Esplora configurazione in Operazioni e aggiornare i valori delle chiavi seguenti:

    Chiave valore
    application/config.message Hello - Updated
  3. Aggiornare la pagina del browser per visualizzare il nuovo messaggio.

Pulire le risorse

Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.
  2. Nella casella Filtra per nome immettere il nome del gruppo di risorse.
  3. Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
  4. Selezionare Elimina gruppo di risorse.
  5. Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.

Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.

Passaggi successivi

In questa esercitazione è stato abilitato l'app Java per aggiornare dinamicamente le impostazioni di configurazione da Configurazione app. Per altre domande, vedere la documentazione di riferimento, con tutti i dettagli sul funzionamento della libreria spring cloud app Azure Configuration. Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a Configurazione app, continuare con l'esercitazione successiva.