简介
优雅退出:当我们关闭程序的时候应该做的后续处理
例如:微服务再启动之前或者启动之后会做一件事:将当前服务的ip+端口注册到注册中心;等到退出时需要告知注册中心;如果没有告知注册中心,那注册中心知道当前服务断开就会有延迟.
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"os"
"os/signal"
"syscall"
)
func main() {
r := gin.Default()
r.GET("/ping", func(context *gin.Context) {
context.JSON(http.StatusOK, gin.H{
"msg": "/pong",
})
})
go func() {
_ = r.Run(":8081")
}()
//等待中断信号,以优雅地关闭服务器
quit := make(chan os.Signal)
// 可以捕捉除了kill-9的所有中断信号
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
fmt.Println("收到中断信号;优雅的退出...")
fmt.Println("退出完成")
}