| 1234567891011121314151617181920212223 | 
							- package user
 
- import (
 
- 	"context"
 
- 	"errors"
 
- 	"github.com/go-kit/kit/endpoint"
 
- 	"golang.org/x/time/rate"
 
- )
 
- var ErrLimitExceed = errors.New("Rate limit exceed!")
 
- // 使用x/time/rate创建限流中间件
 
- func NewTokenBucketLimitterWithBuildIn(bkt *rate.Limiter) endpoint.Middleware {
 
- 	return func(next endpoint.Endpoint) endpoint.Endpoint {
 
- 		return func(ctx context.Context, request interface{}) (response interface{}, err error) {
 
- 			if !bkt.Allow() {
 
- 				return nil, ErrLimitExceed
 
- 			}
 
- 			return next(ctx, request)
 
- 		}
 
- 	}
 
- }
 
 
  |