五.Sentinel SentinelResource注解 属性

2021-03-25  本文已影响0人  G__yuan

SentinelResource注解

1.value

作用:指定资源名称
是否必须:是

@SentinelResource(value = "test/get1")

2.entryType

作用:entry类型,标记流量的方向,指明是出口流量,还是入口流量;取值 IN/OUT ,默认是OUT。
是否必须:否

@SentinelResource(value = "test/get1",entryType = EntryType.IN)

3.blockHandler

作用:处理BlockException的函数名称,函数要求为:

@GetMapping("/get")
    @SentinelResource(value = "test/get1",blockHandler = "testGetBlockHandler")
    public Object getInstanceInfo(){
        ServiceInstanceInfo serviceInstance = neofaithDiscoveryClient.getServiceInstance("neofaith-wechat-web");
        String s = JSONObject.toJSONString(serviceInstance);
        System.out.println("neofaithDiscoveryClient:"+s);
        List<ServiceInstance> instances = discoveryClient.getInstances("neofaith-wechat-web");
        String ss = JSONObject.toJSONString(instances);
        System.out.println("discoveryClient:"+ss);
        return  ss;
    }
    public Object testGetBlockHandler(BlockException e){
        e.printStackTrace();
        return "被限流或者降级了";
    }

4.blockHandlerClass

作用:存放blockHandler的类。对应的处理函数必须static修饰,否则无法解析。
函数要求为:

@GetMapping("/get")
    @SentinelResource(value = "test/get1",entryType = EntryType.IN, blockHandler = "testGetBlockHandler",
            blockHandlerClass = BlockExceptionHandler.class
    )
    public Object getInstanceInfo(){
        ServiceInstanceInfo serviceInstance = neofaithDiscoveryClient.getServiceInstance("neofaith-wechat-web");
        String s = JSONObject.toJSONString(serviceInstance);
        System.out.println("neofaithDiscoveryClient:"+s);
        List<ServiceInstance> instances = discoveryClient.getInstances("neofaith-wechat-web");
        String ss = JSONObject.toJSONString(instances);
        System.out.println("discoveryClient:"+ss);
        return  ss;
    }

public class BlockExceptionHandler {
    public static Object testGetBlockHandler(BlockException e){
        e.printStackTrace();
        return "被限流或者降级了";
    }
}

5.fallback

作用:用于在抛出异常的时候提供fallback处理逻辑。fallback函数可以针对所有类型的异常(除了execptionsToIgnore 里面排除掉的异常类型)进行处理。函数要求:

    @GetMapping("/get")
    @SentinelResource(value = "test/get1", blockHandler = "testGetBlockHandler",
            blockHandlerClass = BlockExceptionHandler.class,fallback = "testFallbackHandler"
    )
    public Object getInstanceInfo(){
        throw  new RuntimeException("抛出异常");
    }
    public Object testFallbackHandler(Throwable e){
        System.out.println(e.getMessage());
        System.out.println("-------------fallbackhandler----------");
        return "捕获所有异常,并处理";
    }

6.fallbackClass

作用:存放fallback的类。对应的处理函数必须static修饰,否则无法解析,其他要求:同fallback。
是否必须:否
代码与blockHandlerClass类似,就不贴出来了。

7.defaultFallback

作用:用于通用的 fallback 逻辑。默认fallback函数可以针对所有类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进行处理。若同时配置了 fallback 和 defaultFallback,以fallback为准。函数要求:

8.exceptionsToIgnore

作用:指定排除掉哪些异常。排除的异常不会计入异常统计,也不会进入fallback逻辑,而是原样抛出
是否必须:否

9.exceptionsToTrace

作用:需要trace的异常

上一篇下一篇

猜你喜欢

热点阅读