Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menjalankan pelayan dalam goroutine?

Menjalankan pelayan dalam goroutine?

王林
王林ke hadapan
2024-02-11 08:30:08390semak imbas

在 goroutine 中运行服务器?

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.

Kandungan soalan

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.

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam