org.springframework.cloud
spring-cloud-starter-netflix-ribbon
diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelCircuitBreakerConfiguration.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelCircuitBreakerConfiguration.java
new file mode 100644
index 00000000..f8d61034
--- /dev/null
+++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/custom/SentinelCircuitBreakerConfiguration.java
@@ -0,0 +1,12 @@
+package org.springframework.cloud.alibaba.sentinel.custom;
+
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author lengleng
+ *
+ * support @EnableCircuitBreaker ,Do nothing
+ */
+@Configuration
+public class SentinelCircuitBreakerConfiguration {
+}
diff --git a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/endpoint/SentinelEndpoint.java b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/endpoint/SentinelEndpoint.java
index d2500768..df893442 100644
--- a/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/endpoint/SentinelEndpoint.java
+++ b/spring-cloud-alibaba-sentinel/src/main/java/org/springframework/cloud/alibaba/sentinel/endpoint/SentinelEndpoint.java
@@ -19,6 +19,7 @@ package org.springframework.cloud.alibaba.sentinel.endpoint;
import java.util.HashMap;
import java.util.Map;
+import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRuleManager;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.cloud.alibaba.sentinel.SentinelProperties;
@@ -67,7 +68,7 @@ public class SentinelEndpoint {
final Map rules = new HashMap<>();
result.put("rules", rules);
rules.put("flowRules", FlowRuleManager.getRules());
- rules.put("degradeRules", SystemRuleManager.getRules());
+ rules.put("degradeRules", DegradeRuleManager.getRules());
rules.put("systemRules", SystemRuleManager.getRules());
rules.put("authorityRule", AuthorityRuleManager.getRules());
rules.put("paramFlowRule", ParamFlowRuleManager.getRules());
diff --git a/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/spring.factories b/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/spring.factories
index 702bb5bb..d964e3b0 100644
--- a/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/spring.factories
+++ b/spring-cloud-alibaba-sentinel/src/main/resources/META-INF/spring.factories
@@ -3,3 +3,6 @@ org.springframework.cloud.alibaba.sentinel.SentinelWebAutoConfiguration,\
org.springframework.cloud.alibaba.sentinel.endpoint.SentinelEndpointAutoConfiguration,\
org.springframework.cloud.alibaba.sentinel.custom.SentinelAutoConfiguration,\
org.springframework.cloud.alibaba.sentinel.feign.SentinelFeignAutoConfiguration
+
+org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker=\
+org.springframework.cloud.alibaba.sentinel.custom.SentinelCircuitBreakerConfiguration
diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java
index 0d43e86f..a2b738fd 100644
--- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java
+++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java
@@ -16,27 +16,19 @@
package org.springframework.cloud.alicloud.context.scx;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.alicloud.context.AliCloudProperties;
import org.springframework.cloud.alicloud.context.edas.EdasContextAutoConfiguration;
import org.springframework.cloud.alicloud.context.edas.EdasProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.util.Assert;
-import org.springframework.util.StringUtils;
import com.alibaba.cloud.context.edas.AliCloudEdasSdk;
-import com.alibaba.cloud.context.edas.EdasChangeOrderConfiguration;
-import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory;
-import com.alibaba.dts.common.exception.InitException;
+import com.alibaba.cloud.context.scx.AliCloudScxInitializer;
import com.alibaba.edas.schedulerx.SchedulerXClient;
-import com.aliyuncs.edas.model.v20170801.GetSecureTokenResponse;
/**
* @author xiaolongzuo
@@ -45,77 +37,15 @@ import com.aliyuncs.edas.model.v20170801.GetSecureTokenResponse;
@ConditionalOnClass(name = "org.springframework.cloud.alicloud.scx.ScxAutoConfiguration")
@EnableConfigurationProperties(ScxProperties.class)
@ImportAutoConfiguration(EdasContextAutoConfiguration.class)
-public class ScxContextAutoConfiguration implements InitializingBean {
+public class ScxContextAutoConfiguration {
- private static final Logger log = LoggerFactory
- .getLogger(ScxContextAutoConfiguration.class);
-
- private static final String TEST_REGION = "cn-test";
-
- private static final String DEFAULT_KEY = "123456";
-
- @Autowired
- private SchedulerXClient schedulerXClient;
-
- @Bean
+ @Bean(initMethod = "init")
+ @ConditionalOnMissingBean
public SchedulerXClient schedulerXClient(AliCloudProperties aliCloudProperties,
- EdasProperties edasProperties, ScxProperties scxProperties,
- AliCloudEdasSdk aliCloudEdasSdk) {
- Assert.isTrue(!StringUtils.isEmpty(scxProperties.getGroupId()),
- "${spring.cloud.alicloud.scx.group-id} can't be null.");
- SchedulerXClient schedulerXClient = new SchedulerXClient();
- schedulerXClient.setGroupId(scxProperties.getGroupId());
-
- EdasChangeOrderConfiguration edasChangeOrderConfiguration = EdasChangeOrderConfigurationFactory
- .getEdasChangeOrderConfiguration();
- if (edasChangeOrderConfiguration.isEdasManaged()) {
- if (edasChangeOrderConfiguration.getRegionId() != null) {
- schedulerXClient
- .setRegionName(edasChangeOrderConfiguration.getRegionId());
- }
- else {
- Assert.isTrue(!StringUtils.isEmpty(edasProperties.getNamespace()),
- "${spring.cloud.alicloud.edas.namespace} can't be null.");
- schedulerXClient.setRegionName(edasProperties.getRegionId());
- }
- schedulerXClient.setDomainName(scxProperties.getDomainName());
- schedulerXClient
- .setAccessKey(edasChangeOrderConfiguration.getDauthAccessKey());
- schedulerXClient
- .setSecretKey(edasChangeOrderConfiguration.getDauthSecretKey());
- }
- else if (TEST_REGION.equals(edasProperties.getNamespace())) {
- Assert.isTrue(!StringUtils.isEmpty(edasProperties.getNamespace()),
- "${spring.cloud.alicloud.edas.namespace} can't be null.");
- schedulerXClient.setRegionName(edasProperties.getNamespace());
- schedulerXClient.setAccessKey(DEFAULT_KEY);
- schedulerXClient.setSecretKey(DEFAULT_KEY);
- }
- else {
- Assert.isTrue(!StringUtils.isEmpty(edasProperties.getNamespace()),
- "${spring.cloud.alicloud.edas.namespace} can't be null.");
- Assert.isTrue(!StringUtils.isEmpty(aliCloudProperties.getAccessKey()),
- "${spring.cloud.alicloud.access-key} can't be empty.");
- Assert.isTrue(!StringUtils.isEmpty(aliCloudProperties.getSecretKey()),
- "${spring.cloud.alicloud.secret-key} can't be empty.");
- GetSecureTokenResponse.SecureToken secureToken = aliCloudEdasSdk
- .getSecureToken(edasProperties.getNamespace());
- schedulerXClient.setRegionName(edasProperties.getRegionId());
- schedulerXClient.setDomainName(scxProperties.getDomainName());
- schedulerXClient.setAccessKey(secureToken.getAccessKey());
- schedulerXClient.setSecretKey(secureToken.getSecretKey());
- }
- return schedulerXClient;
+ EdasProperties edasProperties, ScxProperties scxProperties,
+ AliCloudEdasSdk aliCloudEdasSdk) {
+ return AliCloudScxInitializer.initialize(aliCloudProperties, edasProperties,
+ scxProperties, aliCloudEdasSdk);
}
- @Override
- public void afterPropertiesSet() {
- try {
- schedulerXClient.init();
- }
- catch (InitException e) {
- log.error("Init SchedulerX failed.", e);
- throw new RuntimeException(e);
- }
- }
}