管理Zuul端点
当@EnableZuulProxy与Spring Boot Actuator配合使用,Zuul会暴露:routes和filters端点。借助这些端点,可方便、直观地查看及管理Zuul。
1.routes端点简介
(1)使用GET方法访问该端点,即可返回Zuul当前映射的路由列表;
(2)使用POST方法访问该端点就会强制刷新Zuul当前映射的路由列表(尽管路由会自动刷新,Spring Cloud依然提供了强制立即刷新的方式)。
(3)Spring Cloud Edgware对/routes端点进行进一步增强,我们可以使用/routes?format=details查看更多与路由相关的详情设置。
由于spring-cloud-starter-zuul已经包含了spring-boot-starter-actuator,因此之前编写的microservice-gateway-zuul已具备路由管理的能力。
2.测试
(1)启动cloud-discovery-eureka(port=8001)
(2)启动cloud-register-user(port=8002)
(3)启动cloud-register-consumer-ribbon(port=8007)
(4)修改cloud-register-gateway-zuul配置,设置management.security.enabled: false
(5)启动cloud-register-gateway-zuul(port=8023)
3.结果展示
(1)访问http://localhost:8023/routes
说明:/cloud-register-user/**会转发到/cloud-register-user微服务的/**。
2)访问http://localhost:8023/routes?format=details
说明:可以看到路由各种配置,至于含义大家自个分析一下吧。
(1)filters端点简介
在Spring Cloud Edgware版本中,新增了/filters 端点。访问该端点即可返回Zuul中当前所有过滤器的详情,并按照类型分类。
(2)结果展示
如下是 /filters 端点的展示结果,从中,我们可以了解当前Zuul中, error、post 、pre 、route 四种类型的过滤器分别有哪些,每个过滤器的order (执行顺序)是多少,以及是否启用等信息。这对于Zuul问题的定位很有用。
{
"error": [
{
"class": "org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter",
"order": 0,
"disabled": false,
"static": true
}
],
"post": [
{
"class": "org.springframework.cloud.netflix.zuul.filters.post.SendResponseFilter",
"order": 1000,
"disabled": false,
"static": true
}
],
"pre": [
{
"class": "org.springframework.cloud.netflix.zuul.filters.pre.DebugFilter",
"order": 1,
"disabled": false,
"static": true
},
{
"class": "org.springframework.cloud.netflix.zuul.filters.pre.FormBodyWrapperFilter",
"order": -1,
"disabled": false,
"static": true
},
{
"class": "org.springframework.cloud.netflix.zuul.filters.pre.Servlet30WrapperFilter",
"order": -2,
"disabled": false,
"static": true
},
{
"class": "org.springframework.cloud.netflix.zuul.filters.pre.ServletDetectionFilter",
"order": -3,
"disabled": false,
"static": true
},
{
"class": "org.springframework.cloud.netflix.zuul.filters.pre.PreDecorationFilter",
"order": 5,
"disabled": false,
"static": true
}
],
"route": [
{
"class": "org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter",
"order": 100,
"disabled": false,
"static": true
},
{
"class": "org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter",
"order": 10,
"disabled": false,
"static": true
},
{
"class": "org.springframework.cloud.netflix.zuul.filters.route.SendForwardFilter",
"order": 500,
"disabled": false,
"static": true
}
]
}
1.gitee:https://gitee.com/StarskyBoy/cloud
2.github: https://github.com/StarskyBoy/cloud