repo: https://github.com/juju/ratelimit
type Bucket
type Bucket struct {
// contains filtered or unexported fields
}
func NewBucket(fillInterval time.Duration, capacity int64) *Bucket
- 按指定间隔向桶里填充一个令牌,直到 capacity,桶初始化是满的 ```go //返回令牌桶可用的数量 func (tb *Bucket) Available() int64
//返回桶初始容量 func (tb *Bucket) Capacity() int64
//填充速率,以秒为单位 func (tb *Bucket) Rate() float64
// Take从桶中取出令牌而不阻塞。它返回调用者在令牌实际可用之前应该等待的时间。 func (tb *Bucket) Take(count int64) time.Duration
//不阻塞取出,没有返回0 func (tb *Bucket) TakeAvailable(count int64) int64
//TakeMaxDuration类似于Take,只是它只在令牌的等待时间不大于maxWait时才从bucket中获取令牌。 //如果等待令牌可用的时间比maxWait长,那么它将不执行任何操作,并报告false, //否则它将返回调用者应该等待的时间,直到令牌真正可用,然后报告true。 func (tb *Bucket) TakeMaxDuration(count int64, maxWait time.Duration) (time.Duration, bool)
// 阻塞取出,桶内没有可用的则等待 func (tb *Bucket) Wait(count int64)
// 阻塞取出,桶内没有可用的则等待maxWait,到maxWait还没可用,则返回false
func (tb *Bucket) WaitMaxDuration(count int64, maxWait time.Duration) bool
```