第一次尝试使用 go 版本 1.16
go get github.com/micro/micro/v2@latest
go install github.com/micro/micro/v2@latest
基本安装步骤是这样的。
启动api命令
micro --registry=consul --registry_address=192.168.1.193 api --handler-api
输出结果
网上有一篇文字的:
https://www.cnblogs.com/zhp-king/p/14799298.html
最近再研究引入consul作为micro的注册中心和配置中心的时候,遇到了个问题
micro --registry=consul --registry_address=xxxxx api --handler=api
看着网上搜刮回来的资料,执行命令暴露端口使其能通过http访问,然后就报错了 ,–registry=consul --registry_address=xxxxx 这两个参数无法使用使用,去掉这两个参数直接运行,consul注册不了服务又会导致无法找到该服务。。。
在运行开源项目遇到问题的时候,我一般的解决思路是优先去github上的issue去搜索关键字,没找到的话就去查官方文档和google,之后再issue上找到了解决方法,原因是micro在1.13之后的版本,已经不支持命令行使用consul了,解决方法就是重新编译micro,先放下地址
https://github.com/micro/micro/issues/405
这里简单的说下步骤
1、cd $GOPATH/src/github.com/micro/micro (如果用的是go module,那么就去pkg目录下去找,最简单的方法就是ide随便引入micro的方法,鼠标点一下调用方法出来的文件就能找到目录了)
2、创建plugins.go并加入下面的代码
package main import ( _ “github.com/micro/go-plugins/registry/consul” )
3、重新编译
go build -o micro main.go plugins.go
4、最后用重新编译的可执行文件重新运行命令即可
根据文章尝试
使用:micro@v1.18.0
go 1.16
使用命令
go build -o micro.exe main.go
使用micro命令测试结果
PS E:\go_project\src\mksz447\cart> micro --registry=consul --registry_address=192.168.1.193 api
panic: qtls.ConnectionState not compatible with tls.ConnectionState
goroutine 1 [running]:
github.com/lucas-clemente/quic-go/internal/handshake.init.1()
E:/go_project/pkg/mod/github.com/lucas-clemente/quic-go@v0.13.1/internal/handshake/unsafe.go:17 +0x139
切换go版本到1.13
重新生成 micro.exe
PS E:\go_project\src\mksz447\cart> micro --registry=consul --registry_address=192.168.1.193 api
2022-03-22 14:37:49.525554 I | [api] Registering API Default Handler at /
2022-03-22 14:37:49.527202 I | [api] HTTP API Listening on [::]:8080
2022-03-22 14:37:49.528675 I | [api] Transport [http] Listening on [::]:54563
2022-03-22 14:37:49.529274 I | [api] Broker [http] Connected to [::]:54564
2022-03-22 14:37:49.640313 I | [api] Registry [consul] Registering node: go.micro.api-3107b49b-15f1-495f-af69-4f2de44356a8
micro和go 版本以及micro版本都有关系