Go Micro Plugins

未匹配的标注
本文档最新版为 3.x,旧版本可能放弃维护,推荐阅读最新版!

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

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
taadis
讨论数量: 0
发起讨论 只看当前版本


暂无话题~