Editor PHP Apple akan membincangkan soalan dalam artikel ini: "Menjalankan pelayan dalam goroutine ialah mekanisme serentak ringan dalam bahasa Go yang boleh mencipta beribu-ribu unit pelaksanaan serentak dalam program ini. Tetapi adakah mungkin untuk menjalankan pelayan dalam goroutine? Jawapan kepada soalan ini tidak mudah dan terdapat beberapa faktor yang perlu dipertimbangkan. Dalam kandungan berikut, kami akan meneroka masalah ini dan memberikan beberapa penyelesaian.
Saya mempunyai perkhidmatan Golang yang mendengar mesej Kafka, tetapi saya juga ingin memulakan pelayan http di dalamnya untuk pemeriksaan kesihatan. Kod pelayan adalah mudah:
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 }
Dalam fungsi utama, saya hanya memanggil fungsi Start().
server.Start()
Adakah ini okay? Atau patutkah saya melakukan ini dalam goroutine seperti ini:
go func(){ server.Start() }()
Banyak perkara lain sedang berlaku dalam main.go - pendengar baris gilir dimulakan, pangkalan data dsb.
Jika anda tidak mahu Run
menyekat utas utama anda, anda memerlukan rutin pergi.
go server.Start()
Atas ialah kandungan terperinci Menjalankan pelayan dalam goroutine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!