GO 语言 gin 第14篇 使用Gin 运行多个服务

运行服务的返回类型为 :http.Handler 。gin.New(),gin.Default() 返回的就是此类型。

使用&http.Server{....} 设置服务参数

使用g.Go(func () error{ return server.ListenAndServe()}) 开启一个服务。

package main

import (
	"github.com/Unknwon/log"
	"github.com/gin-gonic/gin"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"golang.org/x/sync-master/errgroup"
	"net/http"
	"time"
)

var (g errgroup.Group)

func router01() http.Handler {
	r := gin.New()
	r.Use(gin.Recovery())
	r.GET("/", func(c *gin.Context){
		c.JSON(http.StatusOK,gin.H{"code":http.StatusOK,
			"error":"Welcome 01"})
	})

	return r

}

func router02() http.Handler {
	r:=gin.New()
	r.Use(gin.Recovery())
	r.GET("/", func(c *gin.Context) {
		c.JSON(http.StatusOK,
			gin.H{"code":http.StatusOK,
				"error":"Welcome server 02"})
	})

	return r
}

func main() {
	server01 := &http.Server{
		Addr:":3001",
		Handler: router01(),
		ReadTimeout:5*time.Second,
		WriteTimeout:10*time.Second,
	}

	server02 := &http.Server{
		Addr:":3002",
		Handler:router02(),
		ReadTimeout:5*time.Second,
		WriteTimeout:10*time.Second,
	}

	g.Go(func() error{
		return server01.ListenAndServe()
	})

	g.Go(func() error{
		return server02.ListenAndServe()
	})

	if err := g.Wait();err != nil {
		log.Fatal("",err)
	}
}



 

 

 

你可能感兴趣的:(go)