app

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2022 License: MIT Imports: 6 Imported by: 0

README

app

优雅的启动和停止服务,使用errgroup保证多个服务同时正常启动。


使用示例

func main() {
	inits := registerInits()
	servers := registerServers()
	closes := registerCloses(servers)

	s := app.New(inits, servers, closes)
	s.Run()
}

func registerInits() []app.Init {
    // 读取配置文件

    var inits []app.Init

	// 初始化日志
	inits = append(inits, func() {

	})

	// 初始化数据库
	inits = append(inits, func() {

	})

    // ......

	return inits
}

func registerServers() []app.IServer {
	var servers []app.IServer

	// 创建http服务
	servers = append(servers, server.NewHTTPServer(

	))

	// 创建grpc服务
	servers = append(servers, server.NewGRPCServer(

	))

    // ......

	return servers
}

func registerCloses(servers []app.IServer) []app.Close {
	var closes []app.Close

	// 关闭服务
	for _, server := range servers {
		closes = append(closes, server.Stop)
	}

	// 关闭数据库连接
	closes = append(closes, func() error {

	})

	// ......

	return closes
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App struct {
	// contains filtered or unexported fields
}

App servers

func New

func New(servers []IServer, closes []Close) *App

New create an app

func (*App) Run

func (a *App) Run()

Run servers

type Close

type Close func() error

Close app close

type IServer

type IServer interface {
	Start() error
	Stop() error
	String() string
}

IServer server interface

Jump to

Keyboard shortcuts

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