Solon v3.7.1

resilience4j-solon-cloud-plugin

</> markdown

此插件,主要社区贡献人(长琴)

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>resilience4j-solon-cloud-plugin</artifactId>
</dependency>

1、描述

分布式扩展插件。基于 resilience4j 适配的 solon cloud 融断器插件。提供基本的融断或限流服务。v3.7.2 后支持

2、配置示例(此配置可通过配置服务,动态更新)

solon.cloud.local:
  breaker:
    root: 100 #根断路器的阀值(即默认阀值)
    main: 150 #qps = 100 #main 为断路器名称(不配置则为 root 值)

3、通过注解,添加埋点

//此处的注解埋点,名称与配置的断路器名称须一一对应
@CloudBreaker("main")
@Controller
public class BreakerController {
    @Mapping("/breaker")
    public void breaker() throws Exception{
        Thread.sleep(1000); //方便测试效果
    }
}

4、手动模式埋点

public class BreakerFilter implements Filter {
    @Override
    public void doFilter(Context ctx, FilterChain chain) throws Throwable {
        if (CloudClient.breaker() == null) {
            chain.doFilter(ctx);
        } else {
            //此处的埋点,名称与配置的断路器名称须一一对应
            try (AutoCloseable entry = CloudClient.breaker().entry("main")) {
                chain.doFilter(ctx);
            } catch (BreakerException ex) {
                //应急处理(降级处理)
                throw new CloudBreakerException("Request capacity exceeds limit");
            }
        }
    }
}