Maison > développement back-end > Golang > Serveur en cours d'exécution dans goroutine ?

Serveur en cours d'exécution dans goroutine ?

王林
Libérer: 2024-02-11 08:30:08
avant
465 Les gens l'ont consulté

在 goroutine 中运行服务器?

L'éditeur PHP Apple abordera une question dans cet article : "Exécuter le serveur dans goroutine ?" Goroutine est un mécanisme de concurrence léger dans le langage Go qui peut créer des milliers d'unités d'exécution simultanées dans le programme. Mais est-il possible de faire tourner le serveur dans une goroutine ? La réponse à cette question n’est pas simple et plusieurs facteurs doivent être pris en compte. Dans le contenu suivant, nous explorerons ce problème et donnerons quelques solutions.

Contenu de la question

J'ai un service Golang qui écoute les messages Kafka, mais je souhaite également y démarrer un serveur http pour les contrôles de santé. Le code du serveur est simple :

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
}
Copier après la connexion

Dans la fonction principale, j'appelle uniquement la fonction Start().

server.Start()
Copier après la connexion

Est-ce que ça va ? Ou devrais-je faire ça dans une goroutine comme celle-ci :

go func(){
   server.Start()
}()
Copier après la connexion

Beaucoup d'autres choses se produisent dans main.go - les écouteurs de file d'attente sont initialisés, les bases de données, etc.

Solution de contournement

Si vous ne voulez pas Run bloquer votre fil de discussion principal, vous aurez besoin d'une routine de démarrage.

go server.Start()

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal