首页 > 后端开发 > Golang > 正文

在 goroutine 中运行服务器?

王林
发布: 2024-02-11 08:30:08
转载
432 人浏览过

在 goroutine 中运行服务器?

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 中运行服务器?的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板