go-micro-1

go get -u -v github.com/micro/go-micro 

执行后如果出现:

# github.com/lucas-clemente/quic-go/internal/handshake
..\..\..\..\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:114:78: undefined: resolver.BuildOption
..\..\..\..\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:182:31: undefined: resolver.ResolveNowOption
# github.com/coreos/etcd/clientv3/balancer/picker
..\..\..\..\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\picker\roundrobin_balanced.go:55:54: undefined: balancer.PickOptions
# github.com/micro/go-micro/transport/quic
..\..\..\..\pkg\mod\github.com\micro\go-micro@v1.18.0\transport\quic\quic.go:54:12: q.s.Close undefined (type quic.Session has no field or method Close)
..\..\..\..\pkg\mod\github.com\micro\go-micro@v1.18.0\transport\quic\quic.go:121:3: unknown field 'IdleTimeout' in struct literal of type quic.Config

则在go.mod中添加

replace google.golang.org/grpc => google.golang.org/grpc v1.26.0
replace github.com/lucas-clemente/quic-go => github.com/lucas-clemente/quic-go v0.14.1

然后再

go mod download
package main

import (
	"net/http"

	"github.com/micro/go-micro/web"
)

func main() {
	// go-micro版HTTP服务
	server := web.NewService(web.Address(":8001"))
	server.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
		writer.Write([]byte("hello world"))
	})
	server.Run()
}


go get -u github.com/gin-gonic/gin
package main

import (
	"github.com/gin-gonic/gin"
	"github.com/micro/go-micro/web"
)
// go-micro结合gin提供服务
func main() {
	ginRouter := gin.Default()
	ginRouter.Handle("GET", "/user", func(context *gin.Context) {
		context.String(200, "user api")
	})

	ginRouter.Handle("GET", "/news", func(context *gin.Context) {
		context.String(200, "new api")
	})

	server := web.NewService(web.Address(":8001"), web.Handler(ginRouter))
	server.Run()
}


把服务注册到conssul
在这里插入图片描述

package main

import (
	"github.com/gin-gonic/gin"
	"github.com/micro/go-micro/registry"
	"github.com/micro/go-micro/registry/consul"
	"github.com/micro/go-micro/web"
)

func main() {
	consulReg := consul.NewRegistry(
		registry.Addrs("consulIP:8500"),
	)

	ginRouter := gin.Default()
	ginRouter.Handle("GET", "/user", func(context *gin.Context) {
		context.String(200, "user api")
	})

	ginRouter.Handle("GET", "/news", func(context *gin.Context) {
		context.String(200, "new api")
	})

	server := web.NewService(
		web.Name("product"), // 服务名
		web.Address(":8001"),
		web.Handler(ginRouter),
		web.Registry(consulReg), // 注册服务到consul
	)
	server.Run()
}

consul agent -server -bootstrap -ui -client 0.0.0.0 -data-dir D:\work\consul_data  # -data-dir数据存放路径

如果启动consul出现 ==> Multiple private IPv4 addresses found. Please configure one with ‘bind’ and/or ‘advertise’.
则添加-bind ipv4地址

consul agent -server -bootstrap -ui -client 0.0.0.0 -data-dir D:\work\consul_data -bind 192.168.1.190
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值