我正在创建一个由3个(服务A,服务B和服务C)微服务组成的样本。所有3项服务以及网关服务(zuul)都在eureka注册。我的用例是:
1)所有请求都将通过网关服务进入系统 - 工作
2)对于针对服务C的每个请求,网关服务应首先呼叫服务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;
}
}