github.com/songzhibin97/gkit@v1.2.13/overload/bbr/example_test.go (about) 1 package bbr 2 3 import ( 4 "context" 5 6 "github.com/songzhibin97/gkit/overload" 7 ) 8 9 func ExampleNewGroup() { 10 group := NewGroup() 11 // 如果没有就会创建 12 limiter := group.Get("key") 13 f, err := limiter.Allow(context.TODO()) 14 if err != nil { 15 // 代表已经过载了,服务不允许接入 16 return 17 } 18 // Op:流量实际的操作类型回写记录指标 19 f(overload.DoneInfo{Op: overload.Success}) 20 } 21 22 func ExampleNewLimiter() { 23 // 建立Group 中间件 24 middle := NewLimiter() 25 26 // 在middleware中 27 // ctx中携带这两个可配置的有效数据 28 // 可以通过 ctx.Set 29 30 // 配置获取限制器类型,可以根据不同api获取不同的限制器 31 ctx := context.WithValue(context.TODO(), LimitKey, "key") 32 33 // 可配置成功是否上报 34 // 必须是 overload.Op 类型 35 ctx = context.WithValue(ctx, LimitOp, overload.Success) 36 37 _ = middle 38 }