Go + cousul 治理微服务(客户端)【五】
原创
©著作权归作者所有:来自51CTO博客作者廖圣平_的原创作品,请联系作者获取转载授权,否则将追究法律责任
先初始化下编写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 !!!跑起来看看
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HZAKVgZO-1627897579830)(http://p1.itc.cn/images01/20201207/52a9bf649675424c9c10481791404b2e.gif)] Go + cousul 治理微服务(客户端)【五】_github](https://s2.51cto.com/images/blog/202302/14161641_63eb4369e66b52220.gif)
访问
http://127.0.0.1:8080/createOrder

完美,成功请求到了服务端。
源码
https://github.com/liaoshengping/Go-Consul-Demo