首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Cloud Canary部署

Spring Cloud Canary部署
EN

Stack Overflow用户
提问于 2019-02-14 17:37:57
回答 1查看 446关注 0票数 0

我有一个spring云微服务,Zuul在docker上运行。

要求:

我想创建金丝雀部署与特定的要求,因为我们将有x个客户端,我想金丝雀测试与y特定的客户端(使用电子邮件或用户名)。

能否将网关配置为将请求路由到这些y客户端的新版本的微服务?

EN

回答 1

Stack Overflow用户

发布于 2019-02-14 19:22:22

所以你可以通过配置或动态路由来实现这一点,但是我认为第一个idom不适合通用部件,每个客户都需要一次又一次地定义它,但第二个更好

代码语言:javascript
复制
@Component
public class PostFilter extends ZuulFilter {

    private static final String REQUEST_PATH = "/special-customer-product-request-url";
    private static final String TARGET_SERVICE = "special-customer-service";
    private static final String HTTP_METHOD = "POST or GET";

    private final DiscoveryClient discoveryClient;

    public PostOrdersFilter(DiscoveryClient discoveryClient) {
        this.discoveryClient = discoveryClient;
    }

    @Override
    public String filterType() {
        return "route";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        RequestContext context = RequestContext.getCurrentContext();
        HttpServletRequest request = context.getRequest();
        String method = request.getMethod();
        String requestURI = request.getRequestURI();
        return HTTP_METHOD.equalsIgnoreCase(method) && requestURI.startsWith(REQUEST_PATH);
    }

    @Override
    public Object run() {

        RequestContext context = RequestContext.getCurrentContext();
        List<ServiceInstance> instances = discoveryClient.getInstances(TARGET_SERVICE);
        try {
            if (instances != null && instances.size() > 0) {
                context.setRouteHost(instances.get(0).getUri().toURL());
            } else {
                throw new IllegalStateException("Target service instance not found!");
            }
        } catch (Exception e) {
            throw new IllegalArgumentException("Couldn't get service URL!", e);
        }
        return null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54687230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档