java – 使用预过滤器和eureka的Zuul动态路由

我正在创建一个由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;
    }

}
最佳答案
正如@Grinish所示,看起来Zuul不支持我打算做的事情.我最终使用Feign Client从Zuul预过滤器内部调用服务A和B.

转载注明原文:java – 使用预过滤器和eureka的Zuul动态路由 - 代码日志