我正在创建一个包含 3 个(服务 A、服务 B 和服务 C)微服务的示例。所有 3 项服务以及网关服务 (zuul) 都在 eureka 中注册。我的用例是:
1)所有请求都会通过网关服务进入系统——工作
2)对于每个针对Service C的请求,网关服务应该首先调用Service A来执行某些动作。在服务 A 的肯定响应中,请求应该被转发到服务 B。一旦我们从服务 A 和服务 B 得到肯定的响应,请求最终应该被转发到服务 C。
我想使用zuul路由过滤器和eureka动态实现上述用例。我查看了PreDecoration过滤器并尝试了以下操作。我的网关服务在 8080 端口上运行
zuul:
routes:
all:
path: /**
url: http://localhost:8761
public class CustomFilter extends ZuulFilter{
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
ctx.set("serviceId", “service-a”);
ctx.setRouteHost(new URL("http://localhost:8080”));
return null;
}
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
}