在前一篇文章的路由的初始化
章节,我们探究了Zuul的路由是如何在事件的驱动下刷新路由的。了解了路由的刷新就已经非常接近动态刷新的功能了。
通过继承DiscoveryClientRouteLocator
来实现一个可以读取数据库的路由定位器:
1 | public class CustomRouteLocator extends DiscoveryClientRouteLocator { |
可以看到,在locateRoutes
方法中首先加载配置文件和Eureka中注册的service,然后读取数据库中的路由数据。
然后再实现一个可以发送刷新事件的service:
1 |
|
每次加入新的路由时,调用RefreshRouteService.refreshRoute
方法就可以实现动态刷新路由的功能了。