Documentation ¶
Index ¶
- Constants
- Variables
- func Props(ctx context.Context) *conf.TomlConfig
- func Register(starter Starter)
- func SetProps(ctx context.Context, conf *conf.TomlConfig) context.Context
- func SortStarters()
- func StarterCancel() context.CancelFunc
- type BaseStarter
- func (s *BaseStarter) Init(context.Context)
- func (s *BaseStarter) ListenStopSig(ctx context.Context)
- func (s *BaseStarter) Priority() int
- func (s *BaseStarter) PriorityGroup() PriorityGroup
- func (s *BaseStarter) Setup(context.Context)
- func (s *BaseStarter) Start(context.Context)
- func (s *BaseStarter) StartBlocking() bool
- func (s *BaseStarter) Stop(context.Context)
- type BootApplication
- type PriorityGroup
- type Starter
- type Starters
Constants ¶
View Source
const ( KeyProps = "_conf" ContextProps = "_props" )
Variables ¶
View Source
var StarterRegister *starterRegister = &starterRegister{}
Functions ¶
func SortStarters ¶
func SortStarters()
func StarterCancel ¶ added in v0.0.14
func StarterCancel() context.CancelFunc
Types ¶
type BaseStarter ¶
type BaseStarter struct { }
默认的空实现,方便资源启动器的实现
func (*BaseStarter) Init ¶
func (s *BaseStarter) Init(context.Context)
func (*BaseStarter) ListenStopSig ¶ added in v0.0.14
func (s *BaseStarter) ListenStopSig(ctx context.Context)
func (*BaseStarter) Priority ¶
func (s *BaseStarter) Priority() int
func (*BaseStarter) PriorityGroup ¶
func (s *BaseStarter) PriorityGroup() PriorityGroup
func (*BaseStarter) Setup ¶
func (s *BaseStarter) Setup(context.Context)
func (*BaseStarter) Start ¶
func (s *BaseStarter) Start(context.Context)
func (*BaseStarter) StartBlocking ¶
func (s *BaseStarter) StartBlocking() bool
func (*BaseStarter) Stop ¶
func (s *BaseStarter) Stop(context.Context)
type BootApplication ¶
type BootApplication struct { IsTest bool // contains filtered or unexported fields }
应用程序
func (*BootApplication) Start ¶
func (b *BootApplication) Start()
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(context.Context) //资源的安装,所有启动需要的具备条件,使得资源达到可以启动的就备状态 Setup(context.Context) //启动资源,达到可以使用的状态 Start(context.Context) //说明该资源启动器开始启动服务时,是否会阻塞 //如果存在多个阻塞启动器时,只有最后一个阻塞,之前的会通过goroutine来异步启动 //所以,需要规划好启动器注册顺序 StartBlocking() bool //资源停止: // 通常在启动时遇到异常时或者启用远程管理时,用于释放资源和终止资源的使用, // 通常要优雅的释放,等待正在进行的任务继续,但不再接受新的任务 Stop(context.Context) PriorityGroup() PriorityGroup Priority() int }
资源启动器,每个应用少不了依赖其他资源,比如数据库,缓存,消息中间件等等服务 启动器实现类,不需要实现所有方法,只需要实现对应的阶段方法即可,可以嵌入@BaseStarter 通过实现资源启动器接口和资源启动注册器,友好的管理这些资源的初始化、安装、启动和停止。 Starter对象注册器,所有需要在系统启动时需要实例化和运行的逻辑,都可以实现此接口 注意只有Start方法才能被阻塞,如果是阻塞Start(),同时StartBlocking()要返回true
Click to show internal directories.
Click to hide internal directories.