parsing limiter config

This commit is contained in:
ginuerzh 2022-04-21 21:39:21 +08:00
parent 180214a124
commit a7f4d3e63e
2 changed files with 25 additions and 0 deletions

View File

@ -273,6 +273,22 @@ func buildConfigFromCmd(services, nodes stringList) (*config.Config, error) {
cfg.Hosts = append(cfg.Hosts, hostsCfg) cfg.Hosts = append(cfg.Hosts, hostsCfg)
delete(mh, "hosts") delete(mh, "hosts")
} }
input := metadata.GetString(md, "limiter.input")
output := metadata.GetString(md, "limiter.output")
if input != "" || output != "" {
limiter := &config.LimiterConfig{
Name: fmt.Sprintf("limiter-%d", len(cfg.Limiters)),
RateLimit: &config.RateLimitConfig{
Input: input,
Output: output,
},
}
service.Limiter = limiter.Name
cfg.Limiters = append(cfg.Limiters, limiter)
delete(mh, "limiter.input")
delete(mh, "limiter.output")
}
} }
return cfg, nil return cfg, nil

View File

@ -62,6 +62,7 @@ func buildService(cfg *config.Config) (services []service.Service) {
} }
} }
} }
for _, recorderCfg := range cfg.Recorders { for _, recorderCfg := range cfg.Recorders {
if h := parsing.ParseRecorder(recorderCfg); h != nil { if h := parsing.ParseRecorder(recorderCfg); h != nil {
if err := registry.RecorderRegistry().Register(recorderCfg.Name, h); err != nil { if err := registry.RecorderRegistry().Register(recorderCfg.Name, h); err != nil {
@ -70,6 +71,14 @@ func buildService(cfg *config.Config) (services []service.Service) {
} }
} }
for _, rlimiterCfg := range cfg.Limiters {
if h := parsing.ParseRateLimiter(rlimiterCfg); h != nil {
if err := registry.RateLimiterRegistry().Register(rlimiterCfg.Name, h); err != nil {
log.Fatal(err)
}
}
}
for _, chainCfg := range cfg.Chains { for _, chainCfg := range cfg.Chains {
c, err := parsing.ParseChain(chainCfg) c, err := parsing.ParseChain(chainCfg)
if err != nil { if err != nil {