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
'srefreshConfigurations
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
- Subscrição do Azure - crie uma gratuitamente
- Um Java Development Kit (JDK) suportado com a versão 11.
- Apache Maven versão 3.0 ou superior.
- Uma Loja de Configuração de Aplicações do Azure existente.
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Configuração Push Refresh
- 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>
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
Navegue até o diretório do seu aplicativo e abra
bootstrap.properties
e configure aresources
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 noresources/META-INF
diretório e adicionando as seguintes linhas e atualizandocom.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.
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.
Atualize o seu
pom.xml
sob oazure-webapp-maven-plugin
adicionar doconfiguration
<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Execute o seguinte comando para criar o aplicativo de console:
mvn package
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
Abra o recurso Configuração do Aplicativo no portal do Azure e selecione
+ Event Subscription
noEvents
painel.Insira um nome para o
Event Subscription
e oSystem 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.Selecione como
Endpoint Type
Web Hook
, selecioneSelect an endpoint
.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
Selecione
Create
para criar a assinatura do evento. QuandoCreate
é 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.Selecione
Event Subscriptions
noEvents
painel para validar se a assinatura foi criada com êxito.
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
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
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 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.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
- Selecione Eliminar grupo de recursos.
- É-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.