先初始化下编写main文件

consulRegister := consul.NewRegistry(func(options *registry.Options) {
options.Addrs = []string{
"192.168.205.22:8500",
}
})

//创建一个新的服务
server := micro.NewService(
micro.Name("client"),
micro.Registry(consulRegister),
)
//初始化
server.Init()

以上和服务端长得几乎是一模一样,​​micro.Registry(consulRegister)​​,这个参数能调用consul 中的服务。

为了更贴近真实的案例,我们用Gin 框架做一个🌰栗子

go get github.com/gin-gonic/gin

完整代码

package main

import (
"context"
"fmt"
"github.com/gin-gonic/gin"
"github.com/micro/go-micro/v2"
"github.com/micro/go-micro/v2/registry"
"github.com/micro/go-plugins/registry/consul/v2"
"github.com/syyongx/php2go"
OrderService "order-micro/proto"
)

func main() {

consulRegister := consul.NewRegistry(func(options *registry.Options) {
options.Addrs = []string{
"192.168.205.22:8500",
}
})

//创建一个新的服务
server := micro.NewService(
micro.Name("client"),
micro.Registry(consulRegister),
)
//初始化
server.Init()
//
r := gin.Default()

r.GET("/createOrder", func(c *gin.Context) {

order := OrderService.NewOrderService("order.service", server.Client())

response, err := order.CreateOrder(context.TODO(), &OrderService.Request{
GoodsId: php2go.Md5("123"),
BuyNum:"1",
})
if err != nil {
fmt.Println(err)
}
fmt.Println(response)

c.JSON(200, gin.H{
"message":response,
})
})
r.Run(":8080") // listen and serve on 0.0.0.0:8080

}

其中

order := OrderService.NewOrderService("order.service", server.Client())

response, err := order.CreateOrder(context.TODO(), &OrderService.Request{
GoodsId: php2go.Md5("123"),
BuyNum:"1",
})
if err != nil {
fmt.Println(err)
}
fmt.Println(response)

这块代码调用了服务端 ​​order.service​

Go Go Go !!!跑起来看看

Go + cousul 治理微服务(客户端)【五】_github


访问

http://127.0.0.1:8080/createOrder

Go + cousul 治理微服务(客户端)【五】_Go_02

完美,成功请求到了服务端。

git commit -m "客户端编写"

源码

​https://github.com/liaoshengping/Go-Consul-Demo​