下载插件
go get github.com/micro/go-plugins
导包
myhttp"github.com/micro/go-plugins/client/http"
1.注册服务
import ( "github.com/gin-gonic/gin" "github.com/micro/go-micro/registry" "github.com/micro/go-micro/web" "github.com/micro/go-plugins/registry/consul" ) // 使用gin框架 func main() { consulReg := consul.NewRegistry( registry.Addrs("127.0.0.1:8500"), ) ginRouter := gin.Default() v1Group := ginRouter.Group("/v1") { v1Group.Handle("POST", "/prods", func(context *gin.Context) { context.JSON(200, gin.H{ "data": NewProdList(5), }) }) } web.NewService(web.Address(":8001"), web.Handler(ginRouter), web.Registry(consulReg), web.Name("product")).Run() }
2.消费服务
import ( "context" "fmt" "github.com/micro/go-micro/client" "github.com/micro/go-micro/client/selector" "github.com/micro/go-micro/registry" myhttp "github.com/micro/go-plugins/client/http" "github.com/micro/go-plugins/registry/consul" _ "io/ioutil" "log" _ "net/http" ) func callApi2(s selector.Selector) { myclient := myhttp.NewClient( client.Selector(s), client.ContentType("application/json"), ) //参数1服务名称,参数2路由地址,参数3传递的参数 req := myclient.NewRequest("product", "/v1/prods", nil) var rsp map[string]interface{}
//req请求参数, rep返回参数 err := myclient.Call(context.Background(), req, &rsp) if err != nil { log.Fatal(err) } fmt.Println(rsp) } func main() { consulReg := consul.NewRegistry( registry.Addrs("127.0.0.1:8500")) mySelector := selector.NewSelector( selector.Registry(consulReg), selector.SetStrategy(selector.RoundRobin), ) callApi2(mySelector) }