Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La biblioteca cliente de App Configuration Java Spring admite la actualización de la configuración a petición sin hacer que una aplicación se reinicie. Se puede configurar una aplicación para que detecte cambios en App Configuration mediante uno de los dos métodos siguientes o ambos.
Modelo de sondeo: el Modelo de sondeo es el comportamiento predeterminado que usa el sondeo para detectar cambios en la configuración. Una vez que el valor almacenado en caché de una configuración expira, la siguiente llamada a
AppConfigurationRefreshorefreshConfigurationsenvía una solicitud al servidor para comprobar si la configuración ha cambiado y extrae la configuración actualizada si es necesario.Modo de inserción: este modo utiliza eventos de App Configuration para detectar los cambios en la configuración. Una vez que App Configuration está configurado para enviar eventos de cambio de valor de clave a Event Grid con un webhook, la aplicación puede usar estos eventos para optimizar el número total de solicitudes necesarias para mantener la configuración actualizada.
Este tutorial muestra cómo puede implementar actualizaciones dinámicas de configuración en el código mediante una actualización push. Se basa en la aplicación que se introdujo en los inicios rápidos. Antes de continuar, finalice Crear una aplicación Java Spring con App Configuration primero.
Para realizar los pasos de este tutorial, puede usar cualquier editor de código. Visual Studio Code es una excelente opción disponible en las plataformas Windows, macOS y Linux.
En este tutorial, aprenderá a:
- Configurar una suscripción para enviar eventos de cambio de configuración desde App Configuration a un webhook.
- Implementar una aplicación de Spring Boot en App Service
- Configure la aplicación Java Spring para actualizar su configuración en respuesta a los cambios en App Configuration.
- Consuma en la aplicación la configuración más reciente.
Prerrequisitos
- suscripción a Azure: crear una gratuita
- Un Java Development Kit (JDK) compatible con la versión 17.
- Apache Maven, versión 3.0 o posterior.
- Un almacén de Azure App Configuration existente.
Si no tiene una cuenta de Azure, cree una cuenta free antes de comenzar.
Configurar Actualización Push
- Abra pom.xml y actualice el archivo con las dependencias siguientes.
<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>7.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Configure Maven App Service Deployment para que la aplicación se pueda implementar en Azure App Service a través de Maven.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:configVaya al directorio
resourcesde la aplicación, abraapplication.propertiesy configure la actualización de inserciones de Azure App Configuration. Si el archivo no existe, créelo. Agregue la siguiente línea al archivo.Usa
DefaultAzureCredentialpara autenticarte en el almacén de App Configuration. Siga las instrucciones para asignar tu credencial al rol Lector de datos de App Configuration. Asegúrese de dejar tiempo suficiente para que el permiso se propague antes de ejecutar la aplicación. Cree un nuevo archivo denominado AppConfigCredential.java y agregue las siguientes líneas:spring.config.import=azureAppConfiguration 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-refreshAdemás, debe agregar el código siguiente al proyecto, a menos que quiera usar la identidad administrada:
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()); } }Y añade la configuración Bootstrap creando un archivo
spring.factoriesen el directorioresources/META-INF, añade las siguientes líneas y actualizacom.example.MyApplicationcon el nombre de tu aplicación y el paquete:org.springframework.cloud.bootstrap.BootstrapConfiguration=\ com.example.MyApplication
Se agrega un retraso aleatorio antes de que el valor almacenado en caché se marque como modificado para reducir la posible limitación. El retraso máximo predeterminado antes de que el valor en caché se marque como caducado es de 30 segundos.
Nota
El nombre del token principal debe almacenarse en App Configuration como clave y, a continuación, el secreto de token principal debe almacenarse como una referencia de App Configuration Key Vault para mayor seguridad.
Compilación y ejecución de la aplicación en App Service
Al crease los webhooks de Event Grid deben validarse. Puede validar si sigue esta guide o iniciando la aplicación con Azure App Configuration Biblioteca web de Spring ya configurada, que registra la aplicación automáticamente. Para usar una suscripción a eventos, siga los pasos de las dos secciones siguientes.
Establezca una variable de entorno.
Establezca la variable de entorno denominada APP_CONFIGURATION_ENDPOINT en el punto de conexión del almacén de App Configuration que se encuentra en la Información general del almacén en Azure Portal.
Si usa el indicador de comando de Windows, ejecute el siguiente comando y reinicie el indicador de comando para permitir que el cambio entre en vigor.
setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"Si usa PowerShell, ejecute el siguiente comando:
$Env:APP_CONFIGURATION_ENDPOINT = "endpoint-of-your-app-configuration-store"Si usa macOS o Linux, ejecute el siguiente comando:
export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'Reinicie el símbolo del sistema para permitir que el cambio surta efecto. Imprima el valor de la variable de entorno para comprobar que se ha establecido correctamente.
Actualice el elemento
pom.xml, enconfigurationdeazure-webapp-maven-pluginagregue<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>Ejecute el siguiente comando para compilar la aplicación de consola:
mvn packageUna vez que la compilación se haya realizado correctamente, ejecute el siguiente comando para ejecutar la aplicación localmente:
mvn azure-webapp:deploy
Configuración de una suscripción a eventos
Abra el recurso App Configuration en el portal de Azure y seleccione
+ Event Subscriptionen el panelEvents.
Escriba un nombre para el
Event Subscriptiony elSystem Topic. De forma predeterminada, se establecen los tipos de eventos clave-valor modificados y eliminados; pero se puede cambiar además del uso de la pestaña Filtros para elegir los motivos exactos por los que se envía un evento de inserción.
Seleccione
Endpoint TypecomoWeb Hooky luego seleccioneSelect an endpoint.
El punto de conexión es el URI de la aplicación + "/actuator/appconfiguration-refresh?{nombre-del-token}={secreto-del-token}". Por ejemplo:
https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecretSeleccione
Createpara crear la suscripción de eventos. Cuando se seleccionaCreate, se envía una solicitud de registro para el webhook a la aplicación. La biblioteca cliente de Azure App Configuration recibe la solicitud, se comprueba y devuelve una respuesta válida.Seleccione
Event Subscriptionsen el panelEventspara validar que la suscripción se creó correctamente.
Nota
Al suscribirse a los cambios de configuración, se pueden usar uno o varios filtros para reducir el número de eventos que se envían a la aplicación. Estos se pueden configurar ya sea como filtros de suscripción de Event Grid. Por ejemplo, un filtro de suscripción se puede utilizar para suscribirse solo a eventos de cambios en una clave que empieza por una cadena específica.
Nota
Si tiene varias instancias de la aplicación en ejecución, puede usar el punto de conexión de appconfiguration-refresh-bus que requiere configurar Azure Service Bus, que se usa para enviar un mensaje a todas las instancias de la aplicación para actualizar su configuración. Esto resulta útil si tiene varias instancias de la aplicación en ejecución y quiere asegurarse de que todas las instancias se actualizan con la configuración más reciente. Este punto de conexión no está disponible a menos que tenga spring-cloud-bus como dependencia con él configurado. Para obtener más información, consulte Azure Service Bus documentación de Spring Cloud Bus. La conexión de Service Bus solo debe configurarse y la biblioteca de Azure App Configuration controlará el envío y recepción de los mensajes.
Comprobación y prueba de la aplicación
Una vez que se está ejecutando la aplicación, puede usar curl para probarla, por ejemplo:
curl -X GET https://my-azure-webapp.azurewebsites.netAbra el portal Azure y vaya al recurso de App Configuration asociado a la aplicación. Seleccione Explorador de configuración en Operaciones y actualice los valores de las claves siguientes:
Clave Importancia application/config.message Hello: actualizado Actualice la página del explorador para ver el nuevo mensaje que se muestra.
Limpieza de recursos
Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de que no elimina por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en el portal Azure y seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.
Pasos siguientes
En este tutorial, ha habilitado la aplicación de Java para actualizar dinámicamente las opciones de configuración desde App Configuration. Para obtener más preguntas, consulte la documentación de referencia, tiene todos los detalles sobre cómo funciona la biblioteca de Spring Cloud Azure App Configuration. Para aprender a usar una identidad administrada Azure para simplificar el acceso a App Configuration, continúe con el siguiente tutorial.