Zuul Gateway 服务器在本地处理请求
Handling of requests locally by Zuul Gateway server
如何让 Spring 启动 Zuul 代理服务器在本地处理特定请求,而不是将其代理到其他服务器?
假设我想通过 API 对 Zuul 代理服务器本身进行自定义健康检查,这应该 return 本地响应,而不是 return 来自其他远程服务器的代理响应。
转发请求需要什么样的路由配置?
以下是我发现的并且对我有用:
1) 创建本地请求处理程序:
在 Zuul 代理服务器代码
的文件中添加带有 RequestMapping 的常规 Controller/RestController
@RestController
public class LocalRequestHandler {
@GetMapping(path = "/status", produces = MediaType.TEXT_PLAIN_VALUE);
private static ResponseEntity<String> getServiceStatus() {
String status = "I am alive";
return ResponseEntity.ok().body(status);
}
}
2) 在定义其他路由的配置文件(application.properties或视情况而定)中创建本地转发路由。在我的例子中,Spring Boot Zuul Proxy 服务器是 运行 在以 GatewaySvc 作为应用程序上下文的 Jetty 容器上。
zuul.routes.gatewaysvc.path=/GatewaySvc/status
zuul.routes.gatewaysvc.url=forward:/GatewaySvc/status
对于我尚未测试的独立 Spring 引导,您可能必须从上述配置中删除上下文路径。
zuul.routes.gatewaysvc.path=/status
zuul.routes.gatewaysvc.url=forward:/status
如何让 Spring 启动 Zuul 代理服务器在本地处理特定请求,而不是将其代理到其他服务器?
假设我想通过 API 对 Zuul 代理服务器本身进行自定义健康检查,这应该 return 本地响应,而不是 return 来自其他远程服务器的代理响应。
转发请求需要什么样的路由配置?
以下是我发现的并且对我有用:
1) 创建本地请求处理程序:
在 Zuul 代理服务器代码
@RestController
public class LocalRequestHandler {
@GetMapping(path = "/status", produces = MediaType.TEXT_PLAIN_VALUE);
private static ResponseEntity<String> getServiceStatus() {
String status = "I am alive";
return ResponseEntity.ok().body(status);
}
}
2) 在定义其他路由的配置文件(application.properties或视情况而定)中创建本地转发路由。在我的例子中,Spring Boot Zuul Proxy 服务器是 运行 在以 GatewaySvc 作为应用程序上下文的 Jetty 容器上。
zuul.routes.gatewaysvc.path=/GatewaySvc/status
zuul.routes.gatewaysvc.url=forward:/GatewaySvc/status
对于我尚未测试的独立 Spring 引导,您可能必须从上述配置中删除上下文路径。
zuul.routes.gatewaysvc.path=/status
zuul.routes.gatewaysvc.url=forward:/status