# Go Micro Plugins
Micro是一個可插拔的工具包和框架。內部功能都可以通過[go-plugins](https://github.com/micro/go-plugins)進行替換。
該工具包有一個單獨的插件界面。[micro/plugin](https://github.com/micro/micro/tree/master/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
```
運行plugins
```
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](https://github.com/micro/go-plugins)。