zoukankan      html  css  js  c++  java
  • go-micro+consul+gin

    安装(前提是本地已安装protobuf和protof的go扩展)

    go get github.com/micro/micro

    go get github.com/micro/go-micro

    go get github.com/micro/protoc-gen-micro

    go get github.com/micro/go-plugins/registry/consul

    支持consul需要单独安装这个包

    go get github.com/micro/go-plugins/registry/consul

    micro生成新项目

    micro new --gopath=false --type=srv micpro

    进入到 proto文件的同级目录,然后执行以下命令生成go文件

    protoc  --micro_out=. --go_out=. *.proto

    package main
    
    import (
    	"github.com/micro/go-micro"
    	"github.com/micro/go-micro/util/log"
    	"github.com/micro/go-plugins/registry/consul"
    	"micpro/handler"
    	micpro "micpro/proto/micpro"
    )
    
    func main() {
    
    	consulRegis := consul.NewRegistry()
    
    	// New Service
    	service := micro.NewService(
    		micro.Name("go.micro.srv.micpro"),
    		micro.Version("latest"),
    		micro.Registry(consulRegis),
    		micro.Address("127.0.0.1:10345"),
    	)
    
    	// Initialise service
    	service.Init()
    
    	// Register Handler
    	micpro.RegisterMicproHandler(service.Server(), new(handler.Micpro))
    
    	// Run service
    	if err := service.Run(); err != nil {
    		log.Fatal(err)
    	}
    }
    

      

    将micro框架proto目录下的文件拷贝到gin目录下,然后在main.go中使用consul

    package main
    
    import (
    	context2 "context"
    	"fmt"
    	micpro "gintemp/proto/micpro"
    	"github.com/gin-gonic/gin"
    	"github.com/micro/go-micro"
    	"github.com/micro/go-micro/client"
    	"github.com/micro/go-plugins/registry/consul"
    	"time"
    )
    
    func microCall(context *gin.Context){
    
    	reg := consul.NewRegistry()
    	service := micro.NewService(micro.Registry(reg))
    	micServ := micpro.NewMicproService("go.micro.srv.micpro",service.Client())
    	res,err := micServ.Call(context2.TODO(),&micpro.Request{Name:"mayuan"},func(o *client.CallOptions) {
    		o.RequestTimeout = time.Second * 30
    		o.DialTimeout = time.Second * 30
    	})
    	if err != nil{
    		fmt.Println(err)
    	}
    	context.Writer.WriteString(res.Msg)
    }
    
    
    func main() {
    	route := gin.Default()
    	route.GET("/", microCall)
    	route.Run(":8080")
    }
  • 相关阅读:
    4.Android开发笔记:Activity的生命周期、启动方式、最佳实践
    3.Android开发笔记:Activity 数据传递
    2.Android开发笔记:Activity
    1.《Android开发笔记》系列
    JS
    Mongodb 学习笔记简介
    Sql Server MySql 日期
    实现tomcat与IIS共用80端口
    学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础--第4章
    学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础
  • 原文地址:https://www.cnblogs.com/itsuibi/p/14730237.html
Copyright © 2011-2022 走看看