mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
sync & commit in greenwich
This commit is contained in:
@@ -38,48 +38,48 @@ import com.alibaba.csp.sentinel.slots.system.SystemRule;
|
||||
public enum RuleType {
|
||||
|
||||
/**
|
||||
* flow
|
||||
* flow.
|
||||
*/
|
||||
FLOW("flow", FlowRule.class),
|
||||
/**
|
||||
* degrade
|
||||
* degrade.
|
||||
*/
|
||||
DEGRADE("degrade", DegradeRule.class),
|
||||
/**
|
||||
* param flow
|
||||
* param flow.
|
||||
*/
|
||||
PARAM_FLOW("param-flow", ParamFlowRule.class),
|
||||
/**
|
||||
* system
|
||||
* system.
|
||||
*/
|
||||
SYSTEM("system", SystemRule.class),
|
||||
/**
|
||||
* authority
|
||||
* authority.
|
||||
*/
|
||||
AUTHORITY("authority", AuthorityRule.class),
|
||||
/**
|
||||
* gateway flow
|
||||
* gateway flow.
|
||||
*/
|
||||
GW_FLOW("gw-flow",
|
||||
"com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule"),
|
||||
/**
|
||||
* api
|
||||
* api.
|
||||
*/
|
||||
GW_API_GROUP("gw-api-group",
|
||||
"com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition");
|
||||
|
||||
/**
|
||||
* alias for {@link AbstractRule}
|
||||
* alias for {@link AbstractRule}.
|
||||
*/
|
||||
private final String name;
|
||||
|
||||
/**
|
||||
* concrete {@link AbstractRule} class
|
||||
* concrete {@link AbstractRule} class.
|
||||
*/
|
||||
private Class clazz;
|
||||
|
||||
/**
|
||||
* concrete {@link AbstractRule} class name
|
||||
* concrete {@link AbstractRule} class name.
|
||||
*/
|
||||
private String clazzName;
|
||||
|
||||
|
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.alibaba.cloud.sentinel.datasource;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:fangjian0423@gmail.com">Jim</a>
|
||||
*/
|
||||
public interface SentinelDataSourceConstants {
|
||||
|
||||
String PROPERTY_PREFIX = "spring.cloud.sentinel";
|
||||
|
||||
}
|
@@ -42,11 +42,15 @@ public class AbstractDataSourceProperties {
|
||||
|
||||
@NotEmpty
|
||||
private String dataType = "json";
|
||||
|
||||
@NotNull
|
||||
private RuleType ruleType;
|
||||
|
||||
private String converterClass;
|
||||
|
||||
@JsonIgnore
|
||||
private final String factoryBeanName;
|
||||
|
||||
@JsonIgnore
|
||||
private Environment env;
|
||||
|
||||
|
@@ -30,8 +30,10 @@ public class ApolloDataSourceProperties extends AbstractDataSourceProperties {
|
||||
|
||||
@NotEmpty
|
||||
private String namespaceName;
|
||||
|
||||
@NotEmpty
|
||||
private String flowRulesKey;
|
||||
|
||||
private String defaultFlowRuleValue;
|
||||
|
||||
public ApolloDataSourceProperties() {
|
||||
|
@@ -66,11 +66,11 @@ public class DataSourcePropertiesConfiguration {
|
||||
this.apollo = apollo;
|
||||
}
|
||||
|
||||
public DataSourcePropertiesConfiguration(RedisDataSourceProperties redis) {
|
||||
this.redis = redis;
|
||||
}
|
||||
public DataSourcePropertiesConfiguration(RedisDataSourceProperties redis) {
|
||||
this.redis = redis;
|
||||
}
|
||||
|
||||
public FileDataSourceProperties getFile() {
|
||||
public FileDataSourceProperties getFile() {
|
||||
return file;
|
||||
}
|
||||
|
||||
|
@@ -35,8 +35,11 @@ public class FileDataSourceProperties extends AbstractDataSourceProperties {
|
||||
|
||||
@NotEmpty
|
||||
private String file;
|
||||
|
||||
private String charset = "utf-8";
|
||||
|
||||
private long recommendRefreshMs = 3000L;
|
||||
|
||||
private int bufSize = 1024 * 1024;
|
||||
|
||||
public FileDataSourceProperties() {
|
||||
|
@@ -39,8 +39,11 @@ public class NacosDataSourceProperties extends AbstractDataSourceProperties {
|
||||
private String dataId;
|
||||
|
||||
private String endpoint;
|
||||
|
||||
private String namespace;
|
||||
|
||||
private String accessKey;
|
||||
|
||||
private String secretKey;
|
||||
|
||||
public NacosDataSourceProperties() {
|
||||
|
@@ -14,15 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
package com.alibaba.cloud.sentinel.datasource.config;
|
||||
|
||||
import com.alibaba.cloud.sentinel.datasource.factorybean.RedisDataSourceFactoryBean;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.cloud.sentinel.datasource.factorybean.RedisDataSourceFactoryBean;
|
||||
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Zookeeper Properties class Using by {@link DataSourcePropertiesConfiguration} and
|
||||
* {@link RedisDataSourceFactoryBean}
|
||||
@@ -31,143 +31,143 @@ import java.util.List;
|
||||
*/
|
||||
public class RedisDataSourceProperties extends AbstractDataSourceProperties {
|
||||
|
||||
public RedisDataSourceProperties() {
|
||||
super(RedisDataSourceFactoryBean.class.getName());
|
||||
}
|
||||
public RedisDataSourceProperties() {
|
||||
super(RedisDataSourceFactoryBean.class.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* redis server host
|
||||
*/
|
||||
private String host = "localhost";
|
||||
/**
|
||||
* redis server host.
|
||||
*/
|
||||
private String host = "localhost";
|
||||
|
||||
/**
|
||||
* redis server port
|
||||
*/
|
||||
private int port = 6379;
|
||||
/**
|
||||
* redis server port.
|
||||
*/
|
||||
private int port = 6379;
|
||||
|
||||
/**
|
||||
* redis server password
|
||||
*/
|
||||
private String password;
|
||||
/**
|
||||
* redis server password.
|
||||
*/
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* redis server default select database
|
||||
*/
|
||||
private int database;
|
||||
/**
|
||||
* redis server default select database.
|
||||
*/
|
||||
private int database;
|
||||
|
||||
/**
|
||||
* redis server timeout
|
||||
*/
|
||||
private Duration timeout;
|
||||
/**
|
||||
* redis server timeout.
|
||||
*/
|
||||
private Duration timeout;
|
||||
|
||||
/**
|
||||
* Comma-separated list of "host:port" pairs.
|
||||
*/
|
||||
private List<String> nodes;
|
||||
/**
|
||||
* Comma-separated list of "host:port" pairs.
|
||||
*/
|
||||
private List<String> nodes;
|
||||
|
||||
/**
|
||||
* data key in Redis
|
||||
*/
|
||||
private String ruleKey;
|
||||
/**
|
||||
* data key in Redis.
|
||||
*/
|
||||
private String ruleKey;
|
||||
|
||||
/**
|
||||
* channel to subscribe in Redis
|
||||
*/
|
||||
private String channel;
|
||||
/**
|
||||
* channel to subscribe in Redis.
|
||||
*/
|
||||
private String channel;
|
||||
|
||||
/**
|
||||
* redis sentinel model
|
||||
*/
|
||||
private String masterId;
|
||||
/**
|
||||
* redis sentinel model.
|
||||
*/
|
||||
private String masterId;
|
||||
|
||||
@Override
|
||||
public void preCheck(String dataSourceName) {
|
||||
super.preCheck(dataSourceName);
|
||||
if (StringUtils.isEmpty(ruleKey)) {
|
||||
throw new IllegalArgumentException(
|
||||
"RedisDataSource ruleKey can not be empty");
|
||||
}
|
||||
@Override
|
||||
public void preCheck(String dataSourceName) {
|
||||
super.preCheck(dataSourceName);
|
||||
if (StringUtils.isEmpty(ruleKey)) {
|
||||
throw new IllegalArgumentException(
|
||||
"RedisDataSource ruleKey can not be empty");
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(channel)) {
|
||||
throw new IllegalArgumentException(
|
||||
"RedisDataSource channel can not be empty");
|
||||
}
|
||||
if (StringUtils.isEmpty(channel)) {
|
||||
throw new IllegalArgumentException(
|
||||
"RedisDataSource channel can not be empty");
|
||||
}
|
||||
|
||||
if (!StringUtils.isEmpty(masterId) && StringUtils.isEmpty(masterId)) {
|
||||
throw new IllegalArgumentException(
|
||||
"RedisDataSource sentinel model,masterId can not be empty");
|
||||
}
|
||||
}
|
||||
if (!StringUtils.isEmpty(masterId) && StringUtils.isEmpty(masterId)) {
|
||||
throw new IllegalArgumentException(
|
||||
"RedisDataSource sentinel model,masterId can not be empty");
|
||||
}
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getRuleKey() {
|
||||
return ruleKey;
|
||||
}
|
||||
public String getRuleKey() {
|
||||
return ruleKey;
|
||||
}
|
||||
|
||||
public void setRuleKey(String ruleKey) {
|
||||
this.ruleKey = ruleKey;
|
||||
}
|
||||
public void setRuleKey(String ruleKey) {
|
||||
this.ruleKey = ruleKey;
|
||||
}
|
||||
|
||||
public String getChannel() {
|
||||
return channel;
|
||||
}
|
||||
public String getChannel() {
|
||||
return channel;
|
||||
}
|
||||
|
||||
public void setChannel(String channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
public void setChannel(String channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public int getDatabase() {
|
||||
return database;
|
||||
}
|
||||
public int getDatabase() {
|
||||
return database;
|
||||
}
|
||||
|
||||
public void setDatabase(int database) {
|
||||
this.database = database;
|
||||
}
|
||||
public void setDatabase(int database) {
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
public Duration getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
public Duration getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
|
||||
public void setTimeout(Duration timeout) {
|
||||
this.timeout = timeout;
|
||||
}
|
||||
public void setTimeout(Duration timeout) {
|
||||
this.timeout = timeout;
|
||||
}
|
||||
|
||||
public List<String> getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
public List<String> getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
public void setNodes(List<String> nodes) {
|
||||
this.nodes = nodes;
|
||||
}
|
||||
public void setNodes(List<String> nodes) {
|
||||
this.nodes = nodes;
|
||||
}
|
||||
|
||||
public String getMasterId() {
|
||||
return masterId;
|
||||
}
|
||||
public String getMasterId() {
|
||||
return masterId;
|
||||
}
|
||||
|
||||
public void setMasterId(String masterId) {
|
||||
this.masterId = masterId;
|
||||
}
|
||||
public void setMasterId(String masterId) {
|
||||
this.masterId = masterId;
|
||||
}
|
||||
}
|
||||
|
@@ -30,8 +30,11 @@ import com.alibaba.csp.sentinel.datasource.apollo.ApolloDataSource;
|
||||
public class ApolloDataSourceFactoryBean implements FactoryBean<ApolloDataSource> {
|
||||
|
||||
private String namespaceName;
|
||||
|
||||
private String flowRulesKey;
|
||||
|
||||
private String defaultFlowRuleValue;
|
||||
|
||||
private Converter converter;
|
||||
|
||||
@Override
|
||||
|
@@ -34,9 +34,13 @@ public class FileRefreshableDataSourceFactoryBean
|
||||
implements FactoryBean<FileRefreshableDataSource> {
|
||||
|
||||
private String file;
|
||||
|
||||
private String charset;
|
||||
|
||||
private long recommendRefreshMs;
|
||||
|
||||
private int bufSize;
|
||||
|
||||
private Converter converter;
|
||||
|
||||
@Override
|
||||
|
@@ -34,13 +34,19 @@ import com.alibaba.nacos.api.PropertyKeyConst;
|
||||
public class NacosDataSourceFactoryBean implements FactoryBean<NacosDataSource> {
|
||||
|
||||
private String serverAddr;
|
||||
|
||||
private String groupId;
|
||||
|
||||
private String dataId;
|
||||
|
||||
private Converter converter;
|
||||
|
||||
private String endpoint;
|
||||
|
||||
private String namespace;
|
||||
|
||||
private String accessKey;
|
||||
|
||||
private String secretKey;
|
||||
|
||||
@Override
|
||||
|
@@ -16,17 +16,18 @@
|
||||
|
||||
package com.alibaba.cloud.sentinel.datasource.factorybean;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||
import com.alibaba.csp.sentinel.datasource.redis.RedisDataSource;
|
||||
import com.alibaba.csp.sentinel.datasource.redis.config.RedisConnectionConfig;
|
||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A {@link FactoryBean} for creating {@link RedisDataSource} instance.
|
||||
*
|
||||
@@ -35,152 +36,154 @@ import java.util.List;
|
||||
*/
|
||||
public class RedisDataSourceFactoryBean implements FactoryBean<RedisDataSource> {
|
||||
|
||||
private String host;
|
||||
private String host;
|
||||
|
||||
private int port;
|
||||
private int port;
|
||||
|
||||
private int database;
|
||||
private int database;
|
||||
|
||||
private Duration timeout;
|
||||
private Duration timeout;
|
||||
|
||||
/**
|
||||
* Comma-separated list of "host:port" pairs.
|
||||
*/
|
||||
private List<String> nodes;
|
||||
/**
|
||||
* Comma-separated list of "host:port" pairs.
|
||||
*/
|
||||
private List<String> nodes;
|
||||
|
||||
private Converter converter;
|
||||
private Converter converter;
|
||||
|
||||
/**
|
||||
* data key in Redis
|
||||
*/
|
||||
private String ruleKey;
|
||||
/**
|
||||
* data key in Redis.
|
||||
*/
|
||||
private String ruleKey;
|
||||
|
||||
/**
|
||||
* channel to subscribe in Redis
|
||||
*/
|
||||
private String channel;
|
||||
/**
|
||||
* channel to subscribe in Redis.
|
||||
*/
|
||||
private String channel;
|
||||
|
||||
/**
|
||||
* redis server password
|
||||
*/
|
||||
private String password;
|
||||
/**
|
||||
* redis server password.
|
||||
*/
|
||||
private String password;
|
||||
|
||||
private String masterId;
|
||||
private String masterId;
|
||||
|
||||
@Override
|
||||
public RedisDataSource getObject() {
|
||||
RedisConnectionConfig.Builder builder = RedisConnectionConfig.builder();
|
||||
@Override
|
||||
public RedisDataSource getObject() {
|
||||
RedisConnectionConfig.Builder builder = RedisConnectionConfig.builder();
|
||||
|
||||
if (nodes == null || nodes.isEmpty()) {
|
||||
builder.withHost(host)
|
||||
.withPort(port)
|
||||
.withDatabase(database);
|
||||
} else {
|
||||
nodes.forEach(node -> {
|
||||
try {
|
||||
String[] parts = StringUtils.split(node, ":");
|
||||
Assert.state(parts.length == 2, "Must be defined as 'host:port'");
|
||||
builder.withRedisSentinel(parts[0], Integer.parseInt(parts[1]));
|
||||
} catch (RuntimeException ex) {
|
||||
throw new IllegalStateException("Invalid redis sentinel property " + node, ex);
|
||||
}
|
||||
});
|
||||
builder.withSentinelMasterId(masterId);
|
||||
}
|
||||
if (nodes == null || nodes.isEmpty()) {
|
||||
builder.withHost(host).withPort(port).withDatabase(database);
|
||||
}
|
||||
else {
|
||||
nodes.forEach(node -> {
|
||||
try {
|
||||
String[] parts = StringUtils.split(node, ":");
|
||||
Assert.state(parts.length == 2, "Must be defined as 'host:port'");
|
||||
builder.withRedisSentinel(parts[0], Integer.parseInt(parts[1]));
|
||||
}
|
||||
catch (RuntimeException ex) {
|
||||
throw new IllegalStateException(
|
||||
"Invalid redis sentinel property " + node, ex);
|
||||
}
|
||||
});
|
||||
builder.withSentinelMasterId(masterId);
|
||||
}
|
||||
|
||||
if (timeout != null) {
|
||||
builder.withTimeout(timeout.toMillis());
|
||||
}
|
||||
if (timeout != null) {
|
||||
builder.withTimeout(timeout.toMillis());
|
||||
}
|
||||
|
||||
if (StringUtils.hasText(password)) {
|
||||
builder.withPassword(password);
|
||||
}
|
||||
if (StringUtils.hasText(password)) {
|
||||
builder.withPassword(password);
|
||||
}
|
||||
|
||||
return new RedisDataSource<List<FlowRule>>(builder.build(), ruleKey, channel, converter);
|
||||
}
|
||||
return new RedisDataSource<List<FlowRule>>(builder.build(), ruleKey, channel,
|
||||
converter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getObjectType() {
|
||||
return RedisDataSource.class;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getObjectType() {
|
||||
return RedisDataSource.class;
|
||||
}
|
||||
|
||||
public Converter getConverter() {
|
||||
return converter;
|
||||
}
|
||||
public Converter getConverter() {
|
||||
return converter;
|
||||
}
|
||||
|
||||
public void setConverter(Converter converter) {
|
||||
this.converter = converter;
|
||||
}
|
||||
public void setConverter(Converter converter) {
|
||||
this.converter = converter;
|
||||
}
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
public void setHost(String host) {
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
public void setPort(int port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getRuleKey() {
|
||||
return ruleKey;
|
||||
}
|
||||
public String getRuleKey() {
|
||||
return ruleKey;
|
||||
}
|
||||
|
||||
public void setRuleKey(String ruleKey) {
|
||||
this.ruleKey = ruleKey;
|
||||
}
|
||||
public void setRuleKey(String ruleKey) {
|
||||
this.ruleKey = ruleKey;
|
||||
}
|
||||
|
||||
public String getChannel() {
|
||||
return channel;
|
||||
}
|
||||
public String getChannel() {
|
||||
return channel;
|
||||
}
|
||||
|
||||
public void setChannel(String channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
public void setChannel(String channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public int getDatabase() {
|
||||
return database;
|
||||
}
|
||||
public int getDatabase() {
|
||||
return database;
|
||||
}
|
||||
|
||||
public void setDatabase(int database) {
|
||||
this.database = database;
|
||||
}
|
||||
public void setDatabase(int database) {
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
public Duration getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
public Duration getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
|
||||
public void setTimeout(Duration timeout) {
|
||||
this.timeout = timeout;
|
||||
}
|
||||
public void setTimeout(Duration timeout) {
|
||||
this.timeout = timeout;
|
||||
}
|
||||
|
||||
public List<String> getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
public List<String> getNodes() {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
public void setNodes(List<String> nodes) {
|
||||
this.nodes = nodes;
|
||||
}
|
||||
public void setNodes(List<String> nodes) {
|
||||
this.nodes = nodes;
|
||||
}
|
||||
|
||||
public String getMasterId() {
|
||||
return masterId;
|
||||
}
|
||||
public String getMasterId() {
|
||||
return masterId;
|
||||
}
|
||||
|
||||
public void setMasterId(String masterId) {
|
||||
this.masterId = masterId;
|
||||
}
|
||||
public void setMasterId(String masterId) {
|
||||
this.masterId = masterId;
|
||||
}
|
||||
}
|
||||
|
@@ -35,6 +35,7 @@ public class ZookeeperDataSourceFactoryBean implements FactoryBean<ZookeeperData
|
||||
private String path;
|
||||
|
||||
private String groupId;
|
||||
|
||||
private String dataId;
|
||||
|
||||
private Converter converter;
|
||||
|
Reference in New Issue
Block a user