1. 框架

Micro 是一个可插拔的工具包和框架. 内部功能可以与任何 插件 置换.

该工具包具有单独的插件接口. 可参阅 micro/plugin 了解更多信息.

以下是有关 go-micro 插件使用情况的信息.

1.1. 使用

插件可以通过以下方式添加到 go-micro. 通过这样做它们可以通过命令行参数或环境变量进行设置.

导入 Go 程序中的插件, 然后调用服务. 初始化以分析命令行和环境变量.

import (
    "github.com/micro/go-micro/v2"
    _ "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()
}

1.1.1. 标志

将插件指定为标志

go run service.go --broker=rabbitmq --registry=kubernetes --transport=nats

1.1.2. 环境变量

使用环境变量指定插件

MICRO_BROKER=rabbitmq
MICRO_REGISTRY=kubernetes \ 
MICRO_TRANSPORT=nats \ 
go run service.go

1.1.3. 选项

创建新服务时, 导入并设置为选项

import (
    "github.com/micro/go-micro/v2"
    "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),
    )
}

1.2. 构建

修改 main.go 文件来包含插件是一种反模式的做法. 最佳做法建议将插件包含在单独的文件中, 并与其一起重新生成. 这允许构建插件的自动化和问题之间的干净分离.

创建文件 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"
)

使用插件构建.

go build -o service main.go plugins.go

使用插件运行

MICRO_BROKER=rabbitmq
MICRO_REGISTRY=kubernetes
MICRO_TRANSPORT=nats
service

1.3. 重建工具包

如果要集成插件, 只需将它们链接到单独的文件中并重新生成

创建 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

1.4. 仓库

go-micro 的插件可以在此仓库 github.com/micro/go-plugins 找到.

results matching ""

    No results matching ""