4

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

}
4

1 回答 1

2

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

于 2016-09-23T09:52:50.450 回答