| package global |
| |
| // ServiceConfig is the configuration of the service provider |
| type ServiceConfig struct { |
| Filter string `yaml:"filter" json:"filter,omitempty" property:"filter"` |
| ProtocolIDs []string `yaml:"protocol-ids" json:"protocol-ids,omitempty" property:"protocol-ids"` // multi protocolIDs support, split by ',' |
| Interface string `yaml:"interface" json:"interface,omitempty" property:"interface"` |
| RegistryIDs []string `yaml:"registry-ids" json:"registry-ids,omitempty" property:"registry-ids"` |
| Cluster string `default:"failover" yaml:"cluster" json:"cluster,omitempty" property:"cluster"` |
| Loadbalance string `default:"random" yaml:"loadbalance" json:"loadbalance,omitempty" property:"loadbalance"` |
| Group string `yaml:"group" json:"group,omitempty" property:"group"` |
| Version string `yaml:"version" json:"version,omitempty" property:"version" ` |
| Methods []*MethodConfig `yaml:"methods" json:"methods,omitempty" property:"methods"` |
| Warmup string `yaml:"warmup" json:"warmup,omitempty" property:"warmup"` |
| Retries string `yaml:"retries" json:"retries,omitempty" property:"retries"` |
| Serialization string `yaml:"serialization" json:"serialization" property:"serialization"` |
| Params map[string]string `yaml:"params" json:"params,omitempty" property:"params"` |
| Token string `yaml:"token" json:"token,omitempty" property:"token"` |
| AccessLog string `yaml:"accesslog" json:"accesslog,omitempty" property:"accesslog"` |
| TpsLimiter string `yaml:"tps.limiter" json:"tps.limiter,omitempty" property:"tps.limiter"` |
| TpsLimitInterval string `yaml:"tps.limit.interval" json:"tps.limit.interval,omitempty" property:"tps.limit.interval"` |
| TpsLimitRate string `yaml:"tps.limit.rate" json:"tps.limit.rate,omitempty" property:"tps.limit.rate"` |
| TpsLimitStrategy string `yaml:"tps.limit.strategy" json:"tps.limit.strategy,omitempty" property:"tps.limit.strategy"` |
| TpsLimitRejectedHandler string `yaml:"tps.limit.rejected.handler" json:"tps.limit.rejected.handler,omitempty" property:"tps.limit.rejected.handler"` |
| ExecuteLimit string `yaml:"execute.limit" json:"execute.limit,omitempty" property:"execute.limit"` |
| ExecuteLimitRejectedHandler string `yaml:"execute.limit.rejected.handler" json:"execute.limit.rejected.handler,omitempty" property:"execute.limit.rejected.handler"` |
| Auth string `yaml:"auth" json:"auth,omitempty" property:"auth"` |
| NotRegister bool `yaml:"not_register" json:"not_register,omitempty" property:"not_register"` |
| ParamSign string `yaml:"param.sign" json:"param.sign,omitempty" property:"param.sign"` |
| Tag string `yaml:"tag" json:"tag,omitempty" property:"tag"` |
| TracingKey string `yaml:"tracing-key" json:"tracing-key,omitempty" propertiy:"tracing-key"` |
| |
| RCProtocolsMap map[string]*ProtocolConfig |
| RCRegistriesMap map[string]*RegistryConfig |
| ProxyFactoryKey string |
| } |
| |
| type ServiceOption func(*ServiceConfig) |
| |
| func DefaultServiceConfig() *ServiceConfig { |
| return &ServiceConfig{ |
| Methods: make([]*MethodConfig, 0, 8), |
| Params: make(map[string]string, 8), |
| RCProtocolsMap: make(map[string]*ProtocolConfig), |
| RCRegistriesMap: make(map[string]*RegistryConfig), |
| } |
| } |
| |
| func WithService_Filter(filter string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Filter = filter |
| } |
| } |
| |
| func WithService_ProtocolIDs(protocolIDs []string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| if len(protocolIDs) <= 0 { |
| cfg.ProtocolIDs = protocolIDs |
| } |
| } |
| } |
| |
| func WithService_Interface(name string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Interface = name |
| } |
| } |
| |
| func WithService_RegistryIDs(registryIDs []string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| if len(registryIDs) <= 0 { |
| cfg.RegistryIDs = registryIDs |
| } |
| } |
| } |
| |
| func WithService_Cluster(cluster string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Cluster = cluster |
| } |
| } |
| |
| func WithService_LoadBalance(loadBalance string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Loadbalance = loadBalance |
| } |
| } |
| |
| func WithService_Group(group string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Group = group |
| } |
| } |
| |
| func WithService_Version(version string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Version = version |
| } |
| } |
| |
| func WithService_Methods(methods []*MethodConfig) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Methods = methods |
| } |
| } |
| |
| func WithService_WarmUp(warmUp string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Warmup = warmUp |
| } |
| } |
| |
| func WithService_Retries(retries string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Retries = retries |
| } |
| } |
| |
| func WithService_Serialization(serialization string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Serialization = serialization |
| } |
| } |
| |
| func WithService_Params(params map[string]string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Params = params |
| } |
| } |
| |
| func WithService_Token(token string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Token = token |
| } |
| } |
| |
| func WithService_AccessLog(accessLog string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.AccessLog = accessLog |
| } |
| } |
| |
| func WithService_TpsLimiter(tpsLimiter string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.TpsLimiter = tpsLimiter |
| } |
| } |
| |
| func WithService_TpsLimitInterval(tpsLimitInterval string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.TpsLimitInterval = tpsLimitInterval |
| } |
| } |
| |
| func WithService_TpsLimitRate(tpsLimitRate string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.TpsLimitRate = tpsLimitRate |
| } |
| } |
| |
| func WithService_TpsLimitStrategy(tpsLimitStrategy string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.TpsLimitStrategy = tpsLimitStrategy |
| } |
| } |
| |
| func WithService_TpsLimitRejectedHandler(tpsLimitRejectedHandler string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.TpsLimitRejectedHandler = tpsLimitRejectedHandler |
| } |
| } |
| |
| func WithService_ExecuteLimit(executeLimit string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.ExecuteLimit = executeLimit |
| } |
| } |
| |
| func WithService_ExecuteLimitRejectedHandler(executeLimitRejectedHandler string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.ExecuteLimitRejectedHandler = executeLimitRejectedHandler |
| } |
| } |
| |
| func WithService_Auth(auth string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Auth = auth |
| } |
| } |
| |
| func WithService_NotRegister(notRegister bool) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.NotRegister = notRegister |
| } |
| } |
| |
| func WithService_ParamSign(paramSign string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.ParamSign = paramSign |
| } |
| } |
| |
| func WithService_Tag(tag string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.Tag = tag |
| } |
| } |
| |
| func WithService_TracingKey(tracingKey string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.TracingKey = tracingKey |
| } |
| } |
| |
| func WithService_RCProtocol(name string, protocol *ProtocolConfig) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| if cfg.RCProtocolsMap == nil { |
| cfg.RCProtocolsMap = make(map[string]*ProtocolConfig) |
| } |
| cfg.RCProtocolsMap[name] = protocol |
| } |
| } |
| |
| func WithService_RCRegistry(name string, registry *RegistryConfig) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| if cfg.RCRegistriesMap == nil { |
| cfg.RCRegistriesMap = make(map[string]*RegistryConfig) |
| } |
| cfg.RCRegistriesMap[name] = registry |
| } |
| } |
| |
| func WithService_ProxyFactoryKey(factory string) ServiceOption { |
| return func(cfg *ServiceConfig) { |
| cfg.ProxyFactoryKey = factory |
| } |
| } |