为路线提供Hystrix回退

当Zuul中给定路由的电路跳闸时,您可以通过创建类型为ZuulFallbackProvider的bean来提供回退响应。在这个bean中,您需要指定回退的路由ID,并提供返回的ClientHttpResponse作为后备。这是一个非常简单的ZuulFallbackProvider实现。

class MyFallbackProvider implements ZuulFallbackProvider {

    @Override

    public String getRoute() {

        return "customers";

    }

    @Override

    public ClientHttpResponse fallbackResponse() {

        return new ClientHttpResponse() {

            @Override

            public HttpStatus getStatusCode() throws IOException {

                return HttpStatus.OK;

            }

            @Override

            public int getRawStatusCode() throws IOException {

                return 200;

            }

            @Override

            public String getStatusText() throws IOException {

                return "OK";

            }

            @Override

            public void close() {

            }

            @Override

            public InputStream getBody() throws IOException {

                return new ByteArrayInputStream("fallback".getBytes());

            }

            @Override

            public HttpHeaders getHeaders() {

                HttpHeaders headers = new HttpHeaders();

                headers.setContentType(MediaType.APPLICATION_JSON);

                return headers;

            }

        };

    }

}

这里是路由配置的样子。

zuul:

  routes:

    customers: /customers/**

如果您希望为所有路由提供默认的回退,您可以创建一个类型为ZuulFallbackProvider的bean,并且getRoute方法返回*或null。

class MyFallbackProvider implements ZuulFallbackProvider {

    @Override

    public String getRoute() {

        return "*";

    }

    @Override

    public ClientHttpResponse fallbackResponse() {

        return new ClientHttpResponse() {

            @Override

            public HttpStatus getStatusCode() throws IOException {

                return HttpStatus.OK;

            }

            @Override

            public int getRawStatusCode() throws IOException {

                return 200;

            }

            @Override

            public String getStatusText() throws IOException {

                return "OK";

            }

            @Override

            public void close() {

            }

            @Override

            public InputStream getBody() throws IOException {

                return new ByteArrayInputStream("fallback".getBytes());

            }

            @Override

            public HttpHeaders getHeaders() {

                HttpHeaders headers = new HttpHeaders();

                headers.setContentType(MediaType.APPLICATION_JSON);

                return headers;

            }

        };

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 当Zuul中给定路由的电路跳闸时,您可以通过创建类型为ZuulFallbackProvider的bean来提供回退...
    咔啡阅读 136评论 0赞 1
  • 如果您@EnableZuulProxy您可以使用代理路径上传文件,只要文件很小,它就应该工作。对于大文件,有一个替...
    咔啡阅读 581评论 0赞 1
  • 参考github wiki:https://github.com/Netflix/zuul/wiki 一、什么是Z...
    进击的阿黑阅读 758评论 0赞 1
  • 红叶初雨 属目绶边心字铭,交加日晚新啼莺。 初濛玷染酡红卷,叶落惊恹冷雨灯。 浅梦西风顷刻泪,谁传玉笛片时声。 折...
    烟blossom阅读 835评论 0赞 3
  • 听到越来越多的女性朋友说:“对不起,我还不想结婚”。似乎每个人越是年长越是成熟起来之后就会越对结婚恐惧。那么女性恐...
    8494fa2006c0阅读 307评论 0赞 0

友情链接更多精彩内容