首页 > 文章列表 > 在并发中运行服务器的goroutine

在并发中运行服务器的goroutine

346 2024-02-10
问题内容

我有一个 Golang 服务正在监听 Kafka 消息,但我也想在其中启动一个 http 服务器以进行运行状况检查。服务器代码很简单:

package server

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func Start() {
    port := ":8080"
    r := setupRouter()
    r.Run(port)
}

func setupRouter() *gin.Engine {
    r := gin.Default()

    r.GET("/health", func(ctx *gin.Context) {
        ctx.JSON(http.StatusOK, gin.H{"status": "OK"})
    })

    return r
}

在主函数中,我只调用 Start() 函数。

server.Start()

这样可以吗?或者我应该在像这样的 goroutine 中完成此操作:

go func(){
   server.Start()
}()

main.go 中还发生了很多其他事情 - 队列侦听器已初始化、数据库等。


正确答案


如果您不希望 Run 阻塞您的主线程,您将需要一个 go 例程。

go server.Start()