diff --git a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreaker.java b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreaker.java index 1127c5e..35f9052 100644 --- a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreaker.java +++ b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreaker.java @@ -41,50 +41,53 @@ import org.springframework.util.Assert; */ public class SentinelCircuitBreaker implements CircuitBreaker { - private final String resourceName; - private final EntryType entryType; + private final String resourceName; + private final EntryType entryType; - private final List rules; + private final List rules; - public SentinelCircuitBreaker(String resourceName, EntryType entryType, List rules) { - Assert.hasText(resourceName, "resourceName cannot be blank"); - Assert.notNull(rules, "rules should not be null"); - this.resourceName = resourceName; - this.entryType = entryType; - this.rules = Collections.unmodifiableList(rules); + public SentinelCircuitBreaker(String resourceName, EntryType entryType, List rules) { + Assert.hasText(resourceName, "resourceName cannot be blank"); + Assert.notNull(rules, "rules should not be null"); + this.resourceName = resourceName; + this.entryType = entryType; + this.rules = Collections.unmodifiableList(rules); - applyToSentinelRuleManager(); - } + applyToSentinelRuleManager(); + } - public SentinelCircuitBreaker(String resourceName, List rules) { - this(resourceName, EntryType.OUT, rules); - } + public SentinelCircuitBreaker(String resourceName, List rules) { + this(resourceName, EntryType.OUT, rules); + } - public SentinelCircuitBreaker(String resourceName) { - this(resourceName, EntryType.OUT, Collections.emptyList()); - } + public SentinelCircuitBreaker(String resourceName) { + this(resourceName, EntryType.OUT, Collections.emptyList()); + } - private void applyToSentinelRuleManager() { - Set ruleSet = new HashSet<>(DegradeRuleManager.getRules()); - ruleSet.addAll(this.rules); - DegradeRuleManager.loadRules(new ArrayList<>(ruleSet)); - } + private void applyToSentinelRuleManager() { + Set ruleSet = new HashSet<>(DegradeRuleManager.getRules()); + ruleSet.addAll(this.rules); + DegradeRuleManager.loadRules(new ArrayList<>(ruleSet)); + } - @Override - public T run(Supplier toRun, Function fallback) { - Entry entry = null; - try { - entry = SphU.entry(resourceName, entryType); - return toRun.get(); - } catch (BlockException ex) { - return fallback.apply(ex); - } catch (Exception ex) { - Tracer.trace(ex); - return fallback.apply(ex); - } finally { - if (entry != null) { - entry.exit(); - } - } - } + @Override + public T run(Supplier toRun, Function fallback) { + Entry entry = null; + try { + entry = SphU.entry(resourceName, entryType); + return toRun.get(); + } + catch (BlockException ex) { + return fallback.apply(ex); + } + catch (Exception ex) { + Tracer.trace(ex); + return fallback.apply(ex); + } + finally { + if (entry != null) { + entry.exit(); + } + } + } } diff --git a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerAutoConfiguration.java b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerAutoConfiguration.java index 638e436..d6efab7 100644 --- a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerAutoConfiguration.java +++ b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerAutoConfiguration.java @@ -34,26 +34,26 @@ import org.springframework.context.annotation.Configuration; * @author Eric Zhao */ @Configuration -@ConditionalOnClass({ SphU.class }) +@ConditionalOnClass({SphU.class}) public class SentinelCircuitBreakerAutoConfiguration { - @Bean - @ConditionalOnMissingBean(CircuitBreakerFactory.class) - public CircuitBreakerFactory sentinelCircuitBreakerFactory() { - return new SentinelCircuitBreakerFactory(); - } + @Bean + @ConditionalOnMissingBean(CircuitBreakerFactory.class) + public CircuitBreakerFactory sentinelCircuitBreakerFactory() { + return new SentinelCircuitBreakerFactory(); + } - @Configuration - public static class SentinelCustomizerConfiguration { - @Autowired(required = false) - public List> customizers = new ArrayList<>(); + @Configuration + public static class SentinelCustomizerConfiguration { + @Autowired(required = false) + public List> customizers = new ArrayList<>(); - @Autowired(required = false) - public SentinelCircuitBreakerFactory factory; + @Autowired(required = false) + public SentinelCircuitBreakerFactory factory; - @PostConstruct - public void init() { - customizers.forEach(customizer -> customizer.customize(factory)); - } - } + @PostConstruct + public void init() { + customizers.forEach(customizer -> customizer.customize(factory)); + } + } } \ No newline at end of file diff --git a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerFactory.java b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerFactory.java index f5186b5..0d40ef5 100644 --- a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerFactory.java +++ b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelCircuitBreakerFactory.java @@ -28,27 +28,27 @@ import org.springframework.util.Assert; */ public class SentinelCircuitBreakerFactory extends CircuitBreakerFactory { - private Function defaultConfiguration = id -> - new SentinelConfigBuilder() - .resourceName(id) - .rules(new ArrayList<>()) - .build(); + private Function defaultConfiguration = id -> + new SentinelConfigBuilder() + .resourceName(id) + .rules(new ArrayList<>()) + .build(); - @Override - public CircuitBreaker create(String id) { - Assert.hasText(id, "A CircuitBreaker must have an id."); - SentinelConfigBuilder.SentinelCircuitBreakerConfiguration conf = getConfigurations() - .computeIfAbsent(id, defaultConfiguration); - return new SentinelCircuitBreaker(id, conf.getEntryType(), conf.getRules()); - } + @Override + public CircuitBreaker create(String id) { + Assert.hasText(id, "A CircuitBreaker must have an id."); + SentinelConfigBuilder.SentinelCircuitBreakerConfiguration conf = getConfigurations() + .computeIfAbsent(id, defaultConfiguration); + return new SentinelCircuitBreaker(id, conf.getEntryType(), conf.getRules()); + } - @Override - protected SentinelConfigBuilder configBuilder(String id) { - return new SentinelConfigBuilder(id); - } + @Override + protected SentinelConfigBuilder configBuilder(String id) { + return new SentinelConfigBuilder(id); + } - @Override - public void configureDefault(Function defaultConfiguration) { - this.defaultConfiguration = defaultConfiguration; - } + @Override + public void configureDefault(Function defaultConfiguration) { + this.defaultConfiguration = defaultConfiguration; + } } diff --git a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelConfigBuilder.java b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelConfigBuilder.java index 6996e9b..91bc227 100644 --- a/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelConfigBuilder.java +++ b/spring-cloud-circuitbreaker-sentinel/src/main/java/org/springframework/cloud/circuitbreaker/sentinel/SentinelConfigBuilder.java @@ -30,74 +30,75 @@ import org.springframework.util.Assert; */ public class SentinelConfigBuilder implements ConfigBuilder { - private String resourceName; - private EntryType entryType; - private List rules; + private String resourceName; + private EntryType entryType; + private List rules; - public SentinelConfigBuilder() {} + public SentinelConfigBuilder() { + } - public SentinelConfigBuilder(String resourceName) { - this.resourceName = resourceName; - } + public SentinelConfigBuilder(String resourceName) { + this.resourceName = resourceName; + } - public SentinelConfigBuilder resourceName(String resourceName) { - this.resourceName = resourceName; - return this; - } + public SentinelConfigBuilder resourceName(String resourceName) { + this.resourceName = resourceName; + return this; + } - public SentinelConfigBuilder entryType(EntryType entryType) { - this.entryType = entryType; - return this; - } + public SentinelConfigBuilder entryType(EntryType entryType) { + this.entryType = entryType; + return this; + } - public SentinelConfigBuilder rules(List rules) { - this.rules = rules; - return this; - } + public SentinelConfigBuilder rules(List rules) { + this.rules = rules; + return this; + } - @Override - public SentinelCircuitBreakerConfiguration build() { - Assert.hasText(resourceName, "resourceName cannot be empty"); - List rules = Optional.ofNullable(this.rules).orElse(new ArrayList<>()); + @Override + public SentinelCircuitBreakerConfiguration build() { + Assert.hasText(resourceName, "resourceName cannot be empty"); + List rules = Optional.ofNullable(this.rules).orElse(new ArrayList<>()); - EntryType entryType = Optional.ofNullable(this.entryType).orElse(EntryType.OUT); - return new SentinelCircuitBreakerConfiguration() - .setResourceName(this.resourceName) - .setEntryType(entryType) - .setRules(rules); - } + EntryType entryType = Optional.ofNullable(this.entryType).orElse(EntryType.OUT); + return new SentinelCircuitBreakerConfiguration() + .setResourceName(this.resourceName) + .setEntryType(entryType) + .setRules(rules); + } - public static class SentinelCircuitBreakerConfiguration { - private String resourceName; - private EntryType entryType; + public static class SentinelCircuitBreakerConfiguration { + private String resourceName; + private EntryType entryType; - private List rules; + private List rules; - public String getResourceName() { - return resourceName; - } + public String getResourceName() { + return resourceName; + } - public SentinelCircuitBreakerConfiguration setResourceName(String resourceName) { - this.resourceName = resourceName; - return this; - } + public SentinelCircuitBreakerConfiguration setResourceName(String resourceName) { + this.resourceName = resourceName; + return this; + } - public EntryType getEntryType() { - return entryType; - } + public EntryType getEntryType() { + return entryType; + } - public SentinelCircuitBreakerConfiguration setEntryType(EntryType entryType) { - this.entryType = entryType; - return this; - } + public SentinelCircuitBreakerConfiguration setEntryType(EntryType entryType) { + this.entryType = entryType; + return this; + } - public List getRules() { - return rules; - } + public List getRules() { + return rules; + } - public SentinelCircuitBreakerConfiguration setRules(List rules) { - this.rules = rules; - return this; - } - } + public SentinelCircuitBreakerConfiguration setRules(List rules) { + this.rules = rules; + return this; + } + } }