Zuul 实现服务降级配置

文章目录

    • 一、自定义Fallback
    • 二、效果验证
    • 关注 Java有货领取更多资料

书接上篇, AlibabaCloud + Zuul 路由转发 我们提出的问题,我们在这里提出解决方案

一、自定义Fallback

package com.javayh.nacos.zuul.fallback;

import org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * @ClassName javayh-cloud-nacos → com.javayh.nacos.zuul.conf → MyZuulFallback
 * @Description 服务降级
 * @Author Dylan
 * @Date 2019/12/5 12:07
 * @Version
 */
@Component
public class MyFallback implements FallbackProvider {

    private final static  String fallback = "服务异常,请您查看";

    @Override
    public String getRoute() {
        // 表明是为哪个微服务提供回退,*表示为所有微服务提供回退
//        return "javayh-nacos-provider";
        return "*";
    }

    /**
     * 回退逻辑
     * @param route 当前请求所访问的微服务名称
     * @param cause
     * @return
     */
    @Override
    public ClientHttpResponse fallbackResponse(String route, Throwable cause) {
        return new ClientHttpResponse() {
            @Override
            public HttpStatus getStatusCode() throws IOException {
                return HttpStatus.BAD_GATEWAY;
            }

            @Override
            public int getRawStatusCode() throws IOException {
                return HttpStatus.BAD_REQUEST.value();
            }

            @Override
            public String getStatusText() throws IOException {
                return HttpStatus.BAD_REQUEST.getReasonPhrase();
            }

            @Override
            public void close() {

            }

            @Override
            public InputStream getBody() throws IOException {
                return new ByteArrayInputStream((route+fallback).getBytes());
            }

            @Override
            public HttpHeaders getHeaders() {
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_JSON);
                return headers;
            }
        };
    }
}

二、效果验证

启动 javayh-nacos-provider
Zuul 实现服务降级配置_第1张图片
这时我们访问http://localhost:8097/provider/provider/find/nacos/11111
Zuul 实现服务降级配置_第2张图片
这时说明我们的服务已经被降级;是不是更加有好些!

关注 Java有货领取更多资料

联系小编。微信:372787553,带您进群互相学习
左侧小编微信,右侧获取免费资料
在这里插入图片描述

技术博客:https://blog.csdn.net/weixin_38937840

SpringCloud学习代码: https://github.com/Dylan-haiji/javayh-cloud

Redis、Mongo、Rabbitmq、Kafka学习代码: https://github.com/Dylan-haiji/javayh-middleware

AlibabaCloud学习代码:https://github.com/Dylan-haiji/javayh-cloud-nacos

SpringBoot+SpringSecurity实现自定义登录学习代码:https://github.com/Dylan-haiji/javayh-distribution

你可能感兴趣的:(Nacos,SpringCloud)