Go Micro Plugins
Micro 是一个可插拔的工具包和框架. 内部功能都可以通过 go-plugins 进行置换.
该工具包有一个单独的插件接口. 可参阅 micro/plugin 了解更多.
以下是关于 go-micro 插件的使用情况.
用法
可以通过以下方式将插件添加到 go-micro 中. 这样使用者可以通过命令行参数或环境变量进行设置.
导入插件
import (
"github.com/micro/go-micro/cmd"
_ "github.com/micro/go-plugins/broker/rabbitmq"
_ "github.com/micro/go-plugins/registry/kubernetes"
_ "github.com/micro/go-plugins/transport/nats"
)
func main() {
// Parse CLI flags
cmd.Init()
}
调用 service.Init
时也是这样
import (
"github.com/micro/go-micro"
_ "github.com/micro/go-plugins/broker/rabbitmq"
_ "github.com/micro/go-plugins/registry/kubernetes"
_ "github.com/micro/go-plugins/transport/nats"
)
func main() {
service := micro.NewService(
// Set service name
micro.Name("my.service"),
)
// Parse CLI flags
service.Init()
}
通过 CLI 标志使用
通过 CLI 标志激活功能
go run service.go --broker=rabbitmq --registry=kubernetes --transport=nats
直接使用插件
CLI 标志提供了初始化插件的简单方法, 但您可以自己做同样的事情.
import (
"github.com/micro/go-micro"
"github.com/micro/go-plugins/registry/kubernetes"
)
func main() {
registry := kubernetes.NewRegistry() //a default to using env vars for master API
service := micro.NewService(
// Set service name
micro.Name("my.service"),
// Set service registry
micro.Registry(registry),
)
}
构建模式
您可能想要使用自动化替换插件或将插件添加到 micro 工具包. 一个简单的方法是通过为插件导入维护一个单独的文件并在构建过程中包含它.
创建 plugins.go 文件
package main
import (
_ “github.com/micro/go-plugins/broker/rabbitmq”
_ “github.com/micro/go-plugins/registry/kubernetes”
_ “github.com/micro/go-plugins/transport/nats”
)
构建 plugins.go
shell go build -o service main.go plugins.go
运行插件
shell service --broker=rabbitmq --registry=kubernetes --transport=nats
用插件重建工具包
如果你想集成插件, 只需将它们链接到一个单独的文件并重建.
创建一个 plugins.go 文件
import (
// etcd v3 registry
_ "github.com/micro/go-plugins/registry/etcdv3"
// nats transport
_ "github.com/micro/go-plugins/transport/nats"
// kafka broker
_ "github.com/micro/go-plugins/broker/kafka"
)
构建二进制文件
// For local use
go build -i -o micro ./main.go ./plugins.go
// For docker image
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-w' -i -o micro ./main.go ./plugins.go
插件标记的用法
micro --registry=etcdv3 --transport=nats --broker=kafka
仓库
go-micro 插件可以在这里代码仓库里找到 github.com/micro/go-plugins