增加链路追踪配置,优化服务退出流程,gf版本升级到v2.4.2

This commit is contained in:
孟帅
2023-06-09 19:13:26 +08:00
parent 48f8c20d9c
commit 05e85f52e7
16 changed files with 94 additions and 33 deletions

View File

@@ -7,7 +7,9 @@ package cmd
import (
"context"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/gproc"
"hotgo/internal/consts"
"hotgo/utility/simple"
"os"
"sync"
@@ -16,15 +18,27 @@ import (
var (
serverCloseSignal = make(chan struct{}, 1)
serverWg = sync.WaitGroup{}
once sync.Once
)
// signalHandlerForOverall 关闭信号处理
func signalHandlerForOverall(sig os.Signal) {
serverCloseSignal <- struct{}{}
serverCloseEvent(gctx.GetInitCtx())
}
// signalListen 信号监听
func signalListen(ctx context.Context, handler ...gproc.SigHandler) {
simple.SafeGo(ctx, func(ctx context.Context) {
gproc.AddSigHandlerShutdown(handler...)
gproc.Listen()
})
}
// serverCloseEvent 关闭事件
// 区别于服务收到退出信号后的处理,只会执行一次
func serverCloseEvent(ctx context.Context) {
once.Do(func() {
simple.Event().Call(consts.EventServerClose, ctx)
})
}

View File

@@ -48,11 +48,11 @@ var (
// 注册全局中间件
group.Middleware(
service.Middleware().Ctx, // 必须第一个加载
service.Middleware().CORS,
service.Middleware().Blacklist,
service.Middleware().DemoLimit,
service.Middleware().ResponseHandler,
service.Middleware().Ctx, // 初始化请求上下文,一般需要第一个进行加载,后续中间件存在依赖关系
service.Middleware().CORS, // 跨域中间件,自动处理跨域问题
service.Middleware().Blacklist, // IP黑名单中间件如果请求IP被后台拉黑所有请求将被拒绝
service.Middleware().DemoLimit, // 演示系統操作限制当开启演示模式时所有POST请求将被拒绝
service.Middleware().ResponseHandler, // HTTP响应预处理在业务处理完成后对响应结果进行格式化和错误过滤将处理后的数据发送给请求方
)
// 注册后台路由
@@ -98,9 +98,9 @@ var (
go func() {
<-serverCloseSignal
websocket.Stop()
service.TCPServer().Stop(ctx)
_ = s.Shutdown() // 主服务建议放在最后一个关闭
websocket.Stop() // 关闭websocket
service.TCPServer().Stop(ctx) // 关闭tcp服务器
_ = s.Shutdown() // 关闭http服务主服务建议放在最后一个关闭
g.Log().Debug(ctx, "http successfully closed ..")
serverWg.Done()
}()