limit

package
v0.0.0-...-68b20d9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 8, 2023 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ConsumeBusyError    = "consume failed because your request is too busy"
	ConsumeTimeoutError = "consume failed because request deadline or waited timeout"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type LimitMethodConf

type LimitMethodConf interface {
	// 获取需要限流的接口方法名
	GetLimitMethods() map[string]struct{}
}

type LimitOption

type LimitOption struct {
	// 令牌发放的频率,单位毫秒
	LimitMillisecond int64
	// 每次发放的个数
	Burst int
}

type LimitService

type LimitService interface {
	// 查询option值
	GetOption() LimitOption
	// 修改option结构体内的参数,支持实时更新
	SetOption(option LimitOption)
	// 直接消费,如果请求过于频繁,则直接拒绝,返回error
	Consume() error
	// 阻塞消费,如果请求过于频繁,通过ctx设置的Deadline或者Timeout来等待一段时间,若资源不够,亦返回error
	ConsumeWithContext(ctx context.Context) error
	// 克隆复制一个新的限流服务接口
	Clone() LimitService
}

限流服务接口

func NewLimitService

func NewLimitService(option LimitOption) LimitService

type LimitServiceProvider

type LimitServiceProvider struct {
	// contains filtered or unexported fields
}

func (*LimitServiceProvider) Clone

func (provider *LimitServiceProvider) Clone() LimitService

func (*LimitServiceProvider) Consume

func (provider *LimitServiceProvider) Consume() error

func (*LimitServiceProvider) ConsumeWithContext

func (provider *LimitServiceProvider) ConsumeWithContext(ctx context.Context) error

func (*LimitServiceProvider) GetOption

func (provider *LimitServiceProvider) GetOption() LimitOption

func (*LimitServiceProvider) SetOption

func (provider *LimitServiceProvider) SetOption(option LimitOption)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL