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  }