php小编苹果在本文中将讨论一个问题:“在goroutine中运行服务器?”Goroutine是Go语言中轻量级的并发机制,可以在程序中创建数千个并发的执行单元。但是,是否可以在goroutine中运行服务器呢?这个问题的答案并不简单,需要考虑一些因素。在接下来的内容中,我们将探讨这个问题并给出一些解决方案。
问题内容
我有一个 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()
以上就是在 goroutine 中运行服务器?的详细内容,更多请关注编程网其它相关文章!