Documentation ¶
Index ¶
- Constants
- Variables
- func Check(a interface{})
- func InitLog(conf kvs.ConfigSource)
- func Register(starter Starter)
- func SetLineNumLogrusHook()
- func SortStarters()
- type BaseStarter
- func (s *BaseStarter) Init(ctx StarterContext)
- func (s *BaseStarter) Priority() int
- func (s *BaseStarter) PriorityGroup() PriorityGroup
- func (s *BaseStarter) Setup(ctx StarterContext)
- func (s *BaseStarter) Start(ctx StarterContext)
- func (s *BaseStarter) StartBlocking() bool
- func (s *BaseStarter) Stop(ctx StarterContext)
- type InitializeRegister
- type Initializer
- type PriorityGroup
- type Res
- type ResCode
- type Starter
- type StarterContext
- type Starters
Constants ¶
View Source
const ( ResCodeOk = 1000 ResCodeValidatorError = 2000 ResCodeRequestParamsError = 2100 ResCodeInnerServerError = 5000 ResCodeBizError = 6000 )
View Source
const (
KeyProps = "_conf"
)
Variables ¶
View Source
var StarterRegister *starterRegister = &starterRegister{}
Functions ¶
func SetLineNumLogrusHook ¶
func SetLineNumLogrusHook()
func SortStarters ¶
func SortStarters()
Types ¶
type BaseStarter ¶
type BaseStarter struct { }
默认的空实现,方便资源启动器的实现
func (*BaseStarter) Init ¶
func (s *BaseStarter) Init(ctx StarterContext)
func (*BaseStarter) Priority ¶
func (s *BaseStarter) Priority() int
func (*BaseStarter) PriorityGroup ¶
func (s *BaseStarter) PriorityGroup() PriorityGroup
func (*BaseStarter) Setup ¶
func (s *BaseStarter) Setup(ctx StarterContext)
func (*BaseStarter) Start ¶
func (s *BaseStarter) Start(ctx StarterContext)
func (*BaseStarter) StartBlocking ¶
func (s *BaseStarter) StartBlocking() bool
func (*BaseStarter) Stop ¶
func (s *BaseStarter) Stop(ctx StarterContext)
type InitializeRegister ¶
type InitializeRegister struct {
Initializers []Initializer
}
初始化注册器
func (*InitializeRegister) Register ¶
func (i *InitializeRegister) Register(ai Initializer)
type Initializer ¶
type Initializer interface {
//用于对象实例化后的初始化操作
Init()
}
type PriorityGroup ¶
type PriorityGroup int
const ( SystemGroup PriorityGroup = 30 BasicResourcesGroup PriorityGroup = 20 AppGroup PriorityGroup = 10 INT_MAX = int(^uint(0) >> 1) DEFAULT_PRIORITY = 10000 )
type Starter ¶
type Starter interface { //资源初始化和,通常把一些准备资源放在这里运行 Init(StarterContext) //资源的安装,所有启动需要的具备条件,使得资源达到可以启动的就备状态 Setup(StarterContext) //启动资源,达到可以使用的状态 Start(StarterContext) //说明该资源启动器开始启动服务时,是否会阻塞 //如果存在多个阻塞启动器时,只有最后一个阻塞,之前的会通过goroutine来异步启动 //所以,需要规划好启动器注册顺序 StartBlocking() bool //资源停止: // 通常在启动时遇到异常时或者启用远程管理时,用于释放资源和终止资源的使用, // 通常要优雅的释放,等待正在进行的任务继续,但不再接受新的任务 Stop(StarterContext) PriorityGroup() PriorityGroup Priority() int }
资源启动器,每个应用少不了依赖其他资源,比如数据库,缓存,消息中间件等等服务 启动器实现类,不需要实现所有方法,只需要实现对应的阶段方法即可,可以嵌入@BaseStarter 通过实现资源启动器接口和资源启动注册器,友好的管理这些资源的初始化、安装、启动和停止。 Starter对象注册器,所有需要在系统启动时需要实例化和运行的逻辑,都可以实现此接口 注意只有Start方法才能被阻塞,如果是阻塞Start(),同时StartBlocking()要返回true
type StarterContext ¶
type StarterContext map[string]interface{}
资源启动器上下文, 用来在服务资源初始化、安装、启动和停止的生命周期中变量和对象的传递
func (StarterContext) Props ¶
func (s StarterContext) Props() kvs.ConfigSource
func (StarterContext) SetProps ¶
func (s StarterContext) SetProps(conf kvs.ConfigSource)
Click to show internal directories.
Click to hide internal directories.