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  }