Implementar carga dinámica y persistencia del enrutamiento Spring Cloud Gateway
En Spring Cloud Gateway, el objeto RouteDefinition define una ruta. Cuando se inicia Spring Cloud Gateway, primero carga todas las RouteDefinitions, luego genera rutas y las carga en ellas (utilizando un mecanismo de almacenamiento en caché, cuyo objetivo principal es mejorar la eficiencia de la coincidencia de rutas). Spring Cloud Gateway puede cargar RouteDefinition desde las siguientes cuatro fuentes de datos: archivos de configuración, Fluent Route API, RouteDefinitionRepository y DiscoveryClient (la interfaz de descubrimiento de servicios definida por Spring Cloud). Como puede ver en el mecanismo de carga de rutas, la forma de agregar, eliminar y modificar rutas dinámicamente es la implementación de un RouteDefinitionRepository personalizado, que garantiza que las rutas agregadas previamente se carguen cuando se inicia Spring Cloud Gateway.
Spring Cloud Gateway define un RouteRefreshListener para escuchar el evento de cambio de ruta RefreshRoutesEvent, por lo que después de agregar, eliminar o actualizar una ruta, solo necesita publicar un evento RefreshRoutesEvent para actualizar todos los componentes que almacenan rutas. a ellos.
Pasos de implementación:
Ejemplo de código fuente Spring Cloud Gateway basado en la implementación de MySQL