使用预滤波器和尤里卡的Zuul动态路由

时间:2016-09-09 10:22:54

标签: java spring-boot netflix-zuul spring-cloud-netflix netflix-ribbon

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

}

1 个答案:

答案 0 :(得分:2)

根据@Grinish的建议,看起来Zuul不支持我打算做的事情。我最终使用Feign Client从Zuul预过滤器内部调用服务A和B.