1. 选项
前言: 设置和使用 Go Micro 选项
Go Micro 使用可变选项模型来设计包的创建和初始化传递参数, 以及作为方法的可选参数. 这为扩展跨插件的选项使用提供了灵活性.
1.1. 概述
创建新服务时, 您可以选择传递其他参数, 例如设置名称, 版本, 消息代理, 注册表或存储, 以便与所有其他内部一起使用.
选项通常定义如下
type Options struct {
Name string
Version string
Broker broker.Broker
Registry registry.Registry
}
type Option func(*Options)
// set the name
func Name(n string) Option {
return func(o *Options) {
o.Name = n
}
}
// set the broker
func Broker(b broker.Broker) Option {
return func(o *Options) {
o.Broker = b
}
}
然后可以按照如下方式设置这些设置
service := micro.NewService(
micro.Name("foobar"),
micro.Broker(broker),
)
1.2. 服务选项
在 Go Micro 中, 我们有许多选项可以设置, 包括将用于身份验证, 配置和存储等内容的基础包. 您可以使用 service.Options()
来访问这些.
身份验证, 配置, 注册表, 存储等包将默认为我们的零依赖插件. 在要通过环境变量或标志配置它们的位置, 可以指定 service.Init()
来分析它们。
例如, 如果要使用文件存储来替换内存存储, 可以按照以下方式完成
## as an env var
MICRO_STORE=file go run main.go
## or as a flag
go run main.go --store=file
然后在内部, 可以通过选项访问存储
service := micro.NewService(
micro.Name("foobar"),
)
service.Init()
store := service.Options().Store