base

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2021 License: MIT Imports: 18 Imported by: 0

Documentation

Index

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 Check

func Check(a interface{})

func InitLog

func InitLog(conf kvs.ConfigSource)

初始化log配置,配置logrus日志文件滚动生成和

func Register

func Register(starter Starter)

注册starter

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 Res

type Res struct {
	Code    ResCode     `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
}

type ResCode

type ResCode int

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

func GetStarters

func GetStarters() []Starter

获取所有注册的starter

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)

type Starters

type Starters []Starter

func (Starters) Len

func (s Starters) Len() int

func (Starters) Less

func (s Starters) Less(i, j int) bool

func (Starters) Swap

func (s Starters) Swap(i, j int)

Jump to

Keyboard shortcuts

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