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
deAppConfigurationRefresh
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
- Assinatura do Azure - criar uma gratuitamente
- Um JDK (Kit de Desenvolvimento do Java) com suporte na versão 11.
- Apache Maven, versão 3.0 ou posterior.
- Um armazenamento existente da Configuração de Aplicativos do Azure.
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
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>
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
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.
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>
Atualizar seu
pom.xml
naazure-webapp-maven-plugin
de adicionarconfiguration
<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Execute o seguinte comando para compilar o aplicativo de console:
mvn package
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
Abra o recurso configuração de aplicativo no portal do Azure e selecione
+ Event Subscription
no painelEvents
.Insira um nome para o
Event Subscription
e oSystem 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.Selecione
Endpoint Type
comoWeb Hook
e, em seguida,Select an endpoint
.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
Selecione
Create
para criar a assinatura do evento. QuandoCreate
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.Selecione
Event Subscriptions
no painelEvents
para validar se a assinatura foi criada com sucesso.
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
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
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 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.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
- Selecione Excluir grupo de recursos.
- 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.