返回

如何同時啟動Gin和gRPC伺服器

簡述

最近在開發member center的時候發生了一個小問題,就是當我們正常在啟動gin server的同時是沒有辦法在啟動gRPC的伺服器的。 這邊記錄一下我是如何解決這個問題的

實作思維

主要透過Goroutine搭配sync.WaitGroup去實作同時啟動兩個server

// main.go
func main(){
    // 先初始化一個sync.WaitGroup出來
    wg := &sync.WaitGroup{}
    // 在這個group裡面新增兩個count
    wg.Add(2)
    // 同時啟動兩個服務
    go startgRPC(wg)
    go startGin(wg)
    // 等待
    wg.Wait()
}

func startgRPC(wg *sync.WaitGroup){
    defer wg.done
    //do something
}

func startGin(wg *sync.WaitGroup){
    defer wg.done
    //do something
}

參考

如果想更了解實作方法直接看我的原始碼吧

member center source code: https://github.com/junminhong/member-services-center

comments powered by Disqus