Tutorial: Uso de la configuración dinámica mediante una actualización de inserción en una aplicación de Java Spring
La biblioteca cliente de Java Spring de App Configuration admite la actualización de la configuración a petición sin provocar el reinicio de una aplicación. 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: este es el comportamiento predeterminado, que usa el sondeo para detectar los cambios en la configuración. Una vez que el valor almacenado en caché de una configuración expira, la siguiente llamada a
AppConfigurationRefresh
orefreshConfigurations
enví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 le muestra cómo puede implementar las actualizaciones de configuración dinámica en el código mediante una actualización de inserción. Se basa en la aplicación que se introdujo en los inicios rápidos. Antes de continuar, termine Creación de una aplicación de Java Spring con Azure App Configuration.
Para realizar los pasos de este tutorial, puede usar cualquier editor de código. Visual Studio Code es una excelente opción que está 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
- Configurar la aplicación de 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
- Una suscripción a Azure: cree una cuenta gratuita
- Un kit de desarrollo de Java (JDK) admitido, versión 11.
- Apache Maven, versión 3.0 o posterior.
- Un almacén de Azure App Configuration existente.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Configuración de la actualización de inserción
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>5.8.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Configure la implementación de Maven en App Service de manera que la aplicación se pueda implementar en Azure App Service mediante Maven.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
Abra bootstrap.properties y configure la actualización por inserción de Azure App Configuration.
# 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
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 modificado es de 30 segundos.
Nota
El nombre del token principal debe almacenarse en App Configuration como clave y, para mayor seguridad, el secreto del token principal, como referencia de Key Vault en App Configuration.
Compilación y ejecución de la aplicación en App Service
Al crease los webhooks de Event Grid deben validarse. Puede realizar la validación siguiendo esta guíao iniciando la aplicación con la biblioteca web de Spring de Azure App Configuration ya configurada, lo cual registrará la aplicación automáticamente. Para usar una suscripción a eventos, siga los pasos de las dos secciones siguientes.
Establezca la variable de entorno en la cadena de conexión de la instancia de App Configuration:
setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
Actualice el elemento
pom.xml
, enconfiguration
deazure-webapp-maven-plugin
agregue<appSettings> <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString> </appSettings>
Ejecute el siguiente comando para compilar la aplicación de consola:
mvn package
Una 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 Azure Portal y seleccione
+ Event Subscription
en el panelEvents
.Escriba un nombre para los campos
Event Subscription
(Suscripción de eventos) ySystem Topic
(Tema del sistema). 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 Type
comoWeb Hook
ySelect 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=myTokenSecret
.Seleccione
Create
para crear la suscripción de eventos. Cuando se seleccionaCreate
, se envía una solicitud de registro para el webhook a la aplicación. Esto lo recibe la biblioteca cliente de Azure App Configuration, lo comprueba y devuelve una respuesta válida.Seleccione
Event Subscriptions
en el panelEvents
para 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 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 la configuración de 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. Consulte la documentación de Azure Service Bus Spring Cloud Bus para obtener más información. 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.net
Abra Azure Portal 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 Value 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 Azure Portal y después 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 la configuración desde App Configuration. Puede encontrar más preguntas en la documentación de referencia, que contiene todos los detalles sobre cómo funciona la biblioteca de Azure App Configuration de Spring Cloud. Para obtener información sobre cómo usar una identidad administrada de Azure para simplificar el acceso a App Configuration, vaya al siguiente tutorial.