Partilhar via


Tutorial: Usar a configuração dinâmica usando a atualização por push em um aplicativo Java Spring

A biblioteca de cliente Java Spring de configuração do aplicativo suporta a atualização da configuração sob demanda sem causar a reinicialização de um aplicativo. Um aplicativo pode ser configurado para detetar alterações na Configuração do Aplicativo usando uma ou ambas as duas abordagens a seguir.

  • Modelo de sondagem: O modelo de sondagem é o comportamento padrão que usa sondagem para detetar alterações na configuração. Quando o valor armazenado em cache de uma configuração expirar, a próxima chamada para AppConfigurationRefresh's refreshConfigurations envia uma solicitação ao servidor para verificar se a configuração foi alterada e extrai a configuração atualizada, se necessário.

  • Modelo de envio: usa eventos de Configuração do Aplicativo para detetar alterações na configuração. Depois que a Configuração do Aplicativo é configurada para enviar eventos de alteração de valor de chave com a Grade de Eventos, com um Gancho da Web, o aplicativo pode usar esses eventos para otimizar o número total de solicitações necessárias para manter a configuração atualizada.

Este tutorial mostra como você pode implementar atualizações de configuração dinâmica em seu código usando a atualização por push. Ele se baseia no aplicativo introduzido nos inícios rápidos. Antes de continuar, conclua Criar um aplicativo Java Spring com Configuração de Aplicativo primeiro.

Você pode usar qualquer editor de código para executar as etapas neste tutorial. O Visual Studio Code é uma excelente opção disponível nas plataformas Windows, macOS e Linux.

Neste tutorial, irá aprender a:

  • Configurar uma assinatura para enviar eventos de alteração de configuração da Configuração do Aplicativo para um Gancho da Web
  • Implantar um aplicativo Spring Boot no Serviço de Aplicativo
  • Configure seu aplicativo Java Spring para atualizar sua configuração em resposta a alterações na Configuração do aplicativo.
  • Consuma a configuração mais recente em seu aplicativo.

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Configuração Push Refresh

  1. Abra pom.xml e atualize o arquivo com as seguintes dependências.
<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. Configure a Implantação do Serviço de Aplicativo Maven para que o aplicativo possa ser implantado no Serviço de Aplicativo do Azure via Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  2. Navegue até o diretório do seu aplicativo e abra bootstrap.properties e configure a resources Atualização por Push de Configuração do Aplicativo Azure. Se o arquivo não existir, crie-o. Adicione a seguinte linha ao ficheiro.

    Você usa o para autenticar em DefaultAzureCredential sua loja de configuração de aplicativos. Siga as instruções para atribuir à sua credencial a função de Leitor de Dados de Configuração do Aplicativo. Certifique-se de dar tempo suficiente para que a permissão se propague antes de executar seu aplicativo. Crie um novo arquivo chamado AppConfigCredential.java e adicione as seguintes linhas:

    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
    

    Além disso, você precisa adicionar o seguinte código ao seu projeto, a menos que você queira usar a identidade gerenciada:

    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());
        }
    }
    

    E adicione a configuração Bootstrap Configuration, criando spring.factories o arquivo no resources/META-INF diretório e adicionando as seguintes linhas e atualizando com.example.MyApplication com o nome do aplicativo e pacote:

    org.springframework.cloud.bootstrap.BootstrapConfiguration=\
    com.example.MyApplication
    

Um atraso aleatório é adicionado antes que o valor armazenado em cache seja marcado como sujo para reduzir a limitação potencial. O atraso máximo padrão antes que o valor armazenado em cache seja marcado como sujo é de 30 segundos.

Nota

O nome do token primário deve ser armazenado na Configuração do aplicativo como uma chave e, em seguida, o segredo do token primário deve ser armazenado como uma referência do cofre da chave de configuração do aplicativo para maior segurança.

Criar e executar o aplicativo no serviço de aplicativo

Os ganchos da Web de grade de eventos exigem validação na criação. Você pode validar seguindo este guia ou iniciando seu aplicativo com a Biblioteca da Web Spring de Configuração de Aplicativo do Azure já configurada, que registra seu aplicativo para você. Para usar uma assinatura de evento, siga as etapas nas próximas duas seções.

  1. Defina uma variável de ambiente.

    Defina a variável de ambiente chamada APP_CONFIGURATION_ENDPOINT para o ponto de extremidade da sua loja de Configuração de Aplicativos encontrado em Visão geral da sua loja no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o seguinte comando e reinicie o prompt de comando para permitir que a alteração entre em vigor:

    setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    Se você usar o PowerShell, execute o seguinte comando:

    $Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"
    

    Se você usa macOS ou Linux, execute o seguinte comando:

    export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    

    Reinicie o prompt de comando para permitir que a alteração entre em vigor. Imprima o valor da variável de ambiente para validar se ela está definida corretamente.


  2. Atualize o seu pom.xml sob o azure-webapp-maven-pluginadicionar do configuration

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Execute o seguinte comando para criar o aplicativo de console:

     mvn package
    
  4. Depois que a compilação for concluída com êxito, execute o seguinte comando para executar o aplicativo localmente:

    mvn azure-webapp:deploy
    

Configurar uma subscrição de evento

  1. Abra o recurso Configuração do Aplicativo no portal do Azure e selecione + Event Subscription no Events painel.

    O painel de eventos tem uma opção para criar novas Assinaturas.

  2. Insira um nome para o Event Subscription e o System Topic. Por padrão, os tipos de evento Key-Value modificados e Key-Value excluídos são definidos, o motivo pode ser alterado junto com o uso da guia Filtros para escolher os motivos exatos pelos quais um evento push é enviado.

    Os eventos requerem um nome, um tópico e filtros.

  3. Selecione como Endpoint Type Web Hook, selecione Select an endpoint.

    Selecionar Ponto de extremidade cria uma nova folha para inserir o URI do ponto de extremidade.

  4. O ponto de extremidade é o URI do aplicativo + "/actuator/appconfiguration-refresh? {seu-token-name}={seu-token-secret}". Por exemplo, https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Selecione Create para criar a assinatura do evento. Quando Create é selecionado, uma solicitação de registro para o Web Hook é enviada para seu aplicativo. A solicitação é recebida pela biblioteca de cliente de Configuração de Aplicativo do Azure, verificada e retorna uma resposta válida.

  6. Selecione Event Subscriptions no Events painel para validar se a assinatura foi criada com êxito.

    Web Hook aparece em uma tabela na parte inferior da página.

Nota

Ao assinar alterações de configuração, um ou mais filtros podem ser usados para reduzir o número de eventos enviados ao seu aplicativo. Eles podem ser configurados como filtros de assinatura da Grade de Eventos. Por exemplo, um filtro de assinatura pode ser usado apenas para assinar eventos para alterações em uma chave que começa com uma cadeia de caracteres específica.

Nota

Se você tiver várias instâncias do seu aplicativo em execução, poderá usar o ponto de extremidade que requer a appconfiguration-refresh-bus configuração do Barramento de Serviço do Azure, que é usado para enviar uma mensagem a todas as instâncias do seu aplicativo para atualizar sua configuração. Isso é útil se você tiver várias instâncias do seu aplicativo em execução e quiser garantir que todas as instâncias sejam atualizadas com a configuração mais recente. Este ponto de extremidade não está disponível a menos que você tenha spring-cloud-bus como dependência com ele configurado. Para obter mais informações, consulte a documentação do Spring Cloud Bus do Azure Service Bus. A conexão do barramento de serviço só precisa ser configurada e a biblioteca de Configuração de Aplicativo do Azure lidará com o envio e o recebimento das mensagens.

Verificar e testar o aplicativo

  1. Depois que seu aplicativo estiver em execução, use curl para testar seu aplicativo, por exemplo:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Abra o Portal do Azure e navegue até o recurso de Configuração do Aplicativo associado ao seu aplicativo. Selecione Configuration Explorer em Operações e atualize os valores das seguintes chaves:

    Key valor
    aplicativo/config.message Olá - Atualizado
  3. Atualize a página do navegador para ver a nova mensagem exibida.

Clean up resources (Limpar recursos)

Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar cobranças.

Importante

A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que deseja manter, exclua cada recurso individualmente de seu respetivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
  4. Selecione Eliminar grupo de recursos.
  5. É-lhe pedido que confirme a eliminação do grupo de recursos. Insira o nome do grupo de recursos a ser confirmado e selecione Excluir.

Após alguns momentos, o grupo de recursos e todos os seus recursos são excluídos.

Próximos passos

Neste tutorial, você habilitou seu aplicativo Java para atualizar dinamicamente as definições de configuração da Configuração do aplicativo. Para mais perguntas, consulte a documentação de referência, que contém todos os detalhes sobre como funciona a biblioteca de Configuração de Aplicativos do Azure do Spring Cloud. Para saber como usar uma identidade gerenciada do Azure para simplificar o acesso à Configuração do Aplicativo, continue para o próximo tutorial.