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

A biblioteca de clientes Java Spring de Configuração de Aplicativos oferece suporte à atualização da configuração sob demanda, sem causar a reinicialização do aplicativo. Um aplicativo pode ser configurado para detectar alterações na Configuração de Aplicativos usando uma das abordagens a seguir ou ambas.

  • Modelo de sondagem: este é o comportamento padrão que usa a sondagem para detectar alterações na configuração. Após a expiração do valor em cache de uma configuração, a próxima chamada para refreshConfigurations de AppConfigurationRefresh enviará uma solicitação ao servidor para verificar se a configuração foi alterada e efetuará pull da configuração atualizada, se necessário.

  • Modo de push: usa eventos da Configuração de Aplicativos para detectar alterações na configuração. Depois que a Configuração de Aplicativos é configurada para enviar eventos de alteração de valor de chave com a Grade de Eventos, com um webhook, 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 no código usando a atualização por push. Ele se baseia no aplicativo introduzido nos inícios rápidos. Antes de continuar, primeiro conclua Criar um aplicativo Java Spring com a Configuração de Aplicativos.

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

Neste tutorial, você aprenderá como:

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

Pré-requisitos

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Configurar a atualização por push

  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.8.0</version>
            <type>pom</type>
            <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. Configure a Implantação do Serviço de Aplicativo Maven para que o aplicativo possa ser implantado no Serviço de Aplicativo do Azure com o Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. Abra bootstrap.properties e configure a Atualização por Push da Configuração de Aplicativos do Azure.

    # 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
    

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

Observação

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

Compilar e executar o aplicativo no serviço de aplicativo

Os webhooks da Grade de Eventos requerem validação na criação. É possível realizar a validação seguindo este guia ou iniciando seu aplicativo com a biblioteca Web do Spring da Configuração de Aplicativos do Azure já configurada, pois ela registrará seu aplicativo para você. Para usar uma assinatura de evento, siga as etapas nas próximas duas seções.

  1. Defina a variável de ambiente para a cadeia de conexão de sua instância da Configuração de Aplicativos:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Atualizar seu pom.xml na azure-webapp-maven-plugin de adicionar configuration

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

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

    mvn azure-webapp:deploy
    

Configurar uma assinatura de evento

  1. Abra o recurso configuração de aplicativo no portal do Azure e selecione + Event Subscription no painel Events.

    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 modificados e excluídos por valor de chave são definidos, mas isso pode ser alterado com o uso da guia Filtros para escolher os motivos exatos para o envio de um Evento de Push.

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

  3. Selecione Endpoint Type como Web Hook e, em seguida, Select an endpoint.

    Selecionar um ponto de extremidade cria uma nova folha para inserir o URI desse ponto.

  4. O ponto de extremidade é o URI do aplicativo + "/actuator/appconfiguration-refresh?{your-token-name}={your-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 for selecionado, uma solicitação de registro para o webhook será enviada ao seu aplicativo. Ela é recebida pela biblioteca de clientes da Configuração de Aplicativos do Azure, é verificada e retorna uma resposta válida.

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

    O webhook aparece em uma tabela na parte inferior da página.

Observação

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

Observação

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

Verificar e testar o aplicativo

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

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Abra o portal do Azure e acesse o recurso de Configuração de Aplicativos associado ao seu aplicativo. Selecione Gerenciador de configurações em Operações e atualize os valores das seguintes chaves.

    Chave Valor
    application/config.message Hello - Updated
  3. Atualize a página do navegador para ver a nova mensagem exibida.

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo 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..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

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

Próximas etapas

Neste tutorial, você habilitou seu aplicativo Java para atualizar dinamicamente as definições de configuração da Configuração de Aplicativos. Para obter mais perguntas, confira a documentação de referência, ela tem 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 pelo Azure para simplificar o acesso à Configuração de Aplicativos, passe para o próximo tutorial.