github.com/songzhibin97/gkit@v1.2.13/downgrade/downgrade.go (about) 1 package downgrade 2 3 import ( 4 "context" 5 6 "github.com/afex/hystrix-go/hystrix" 7 ) 8 9 // package downgrade: 熔断降级 10 // 与 "github.com/afex/hystrix-go/hystrix" 使用方法一致,只是做了抽象封装,避免因为升级对服务造成影响" 11 12 type ( 13 RunFunc = func() error 14 FallbackFunc = func(error) error 15 RunFuncC = func(context.Context) error 16 FallbackFuncC = func(context.Context, error) error 17 ) 18 19 // Fuse 熔断降级接口 20 type Fuse interface { 21 // Do 以同步的方式运行 RunFunc,直到成功为止 22 // 如果返回错误,执行 FallbackFunc 函数 23 Do(name string, run RunFunc, fallback FallbackFunc) error 24 25 // DoC 同步方式处理 26 DoC(ctx context.Context, name string, run RunFuncC, fallback FallbackFuncC) error 27 28 // Go 异步调用返回 channel 29 Go(name string, run RunFunc, fallback FallbackFunc) chan error 30 31 // GoC 32 // Do/Go 都调用GoC, Do中处理了异步过程 33 GoC(ctx context.Context, name string, run RunFuncC, fallback FallbackFuncC) chan error 34 35 // ConfigureCommand 配置参数 36 ConfigureCommand(name string, config hystrix.CommandConfig) 37 }