• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

14.Go-micro的装饰器wrapper的初步使用(中间件)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

使用go-micro官方提供的wrapper来对路由进行装饰

package main

import (
    "context"
    "fmt"
    "github.com/micro/go-micro"
    "github.com/micro/go-micro/client"
    "github.com/micro/go-micro/registry"
    "github.com/micro/go-micro/web"
    "github.com/micro/go-plugins/registry/consul"
    "go-micro/Services"
    "go-micro/Weblib"
)

type logWrapper struct { //官方提供的例子,创建自己的struct,嵌套go-micro的client
    client.Client
}

//重写Call方法
func (this *logWrapper) Call(ctx context.Context, req client.Request, rsp interface{}, opts ...client.CallOption) error {
    fmt.Println("调用接口") //这样每一次调用调用接口时都会
    return this.Client.Call(ctx, req, rsp)
}

func NewLogWrapper(c client.Client) client.Client {
    return &logWrapper{c}
}

func main() {
    //下面两局代码是注册rpcserver调用客户端
    myService := micro.NewService(
        micro.Name("prodservice.client"),
        micro.WrapClient(NewLogWrapper), //在注册时只需要传入方法名即可,底层会自动给这个方法传入client
    )
    prodService := Services.NewProdService("prodservice", myService.Client())//生成的这个客户端绑定consul中存储的prodservice服务,只要调用了prodservice接口就会调用我们上面注册的中间件

    consulReg := consul.NewRegistry( //新建一个consul注册的地址,也就是我们consul服务启动的机器ip+端口
        registry.Addrs("localhost:8500"),
    )

    //其实下面这段代码的作用就是启动webserver的同事的时候把服务注册进去
    httpserver := web.NewService( //go-micro很灵性的实现了注册和反注册,我们启动后直接ctrl+c退出这个server,它会自动帮我们实现反注册
        web.Name("httpprodservice"),                   //注册进consul服务中的service名字
        web.Address(":8001"),                          //注册进consul服务中的端口,也是这里我们gin的server地址
        web.Handler(Weblib.NewGinRouter(prodService)), //web.Handler()返回一个Option,我们直接把ginRouter穿进去,就可以和gin完美的结合
        web.Registry(consulReg),                       //注册到哪个服务器上的consul中
    )
    httpserver.Init() //加了这句就可以使用命令行的形式去设置我们一些启动的配置
    httpserver.Run()
}






鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
52_Go基础_1_19切片的再扩容发布时间:2022-07-10
下一篇:
go语言入门发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap