config

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventTypePut    = 0
	EventTypeDelete = 1
)
View Source
const (
	TagNameService = "conf_service"
	TagNamePath    = "conf_path"
	TagNameValue   = "conf_value"
	TagNameJson    = "json"
)

Variables

Functions

This section is empty.

Types

type APPConfig

type APPConfig struct {
	Name    string `json:"name"`
	Version string `json:"version"`
	Env     string `json:"env"`
}

type ChangeCallback

type ChangeCallback func(event ChangeEvent) error

type ChangeEvent

type ChangeEvent struct {
	EventType int
	Priority  int
	Prefix    string
	Key       string
	FullKey   string
	Value     []byte
}

type ConfigureWatcherRepo

type ConfigureWatcherRepo interface {
	// Load 解析配置对象 object 中的 `conf_path` 标签及 json 标签,获取配置对象配置中心路径的映射
	Load(object interface{}) error
	// AddPrefix 为当前的 Manager 对象添加一个前缀并指定优先级,指定前缀中后与配置路径之间会进行合并, 优先级高的配置会覆盖优先级低的配置,
	// 当 ignoreEmpty 为 true 时,不检查缺失的配置项
	AddPrefix(prefix string, priority int, ignoreEmpty bool)
	// Start 启动 ConfigureRepo 对配置中心的监听,配置中心中所有的配置变更会实时更新到之前通过 Load 绑定的对象上
	Start() error

	// LoadAndStart 提供了组合调用 Load 跟 Start 的能力,该接口为用户减少需要处理的错误状态
	LoadAndStart(object interface{}) error

	// LoadWithPath 为 object 建立 path 的监听,并在 path 发生变化时为其提供热更新能力, 该接口一般用于运行时需要动态监听配置的情形
	LoadWithPath(object interface{}, path string) error
}

func NewConfigWatcher

func NewConfigWatcher(configure *LocalConfigure) (ConfigureWatcherRepo, error)

NewConfigWatcher 创建配置中心监听器, 他依赖于本地配置提供的配置中心地址

type LocalConfigure

type LocalConfigure struct {
	APP APPConfig `json:"app"` // APP 基本配置
	// ConfigureCenter 配置中心的地址
	ConfigCenter struct {
		// 本地配置文件,如果配置了则不使用配置中心,而是使用本地的配置文件
		LocalFile string   `json:"local_file"`
		Endpoints []string `json:"endpoints"`
		Username  string   `json:"username"`
		Password  string   `json:"password"`
		Timeout   string   `json:"timeout"` // example 10s
	} `json:"config_center"`
}

func NewConfigWithFiles

func NewConfigWithFiles() (conf *LocalConfigure, err error)

NewConfigWithFiles 初始化配置手柄 , WARN: kratos 的实现会产生错误日志,暂时忽略

type Manager

type Manager struct {
	LocalFile   string
	Client      *etcd.Client
	Instances   []*managerInstance
	TraceInfo   traceInfo
	WatchPath   []string
	PathHistory map[string]*pathPriorityHistory
}

func (*Manager) AddPrefix

func (c *Manager) AddPrefix(prefix string, priority int, ignoreEmpty bool)

func (*Manager) Load

func (c *Manager) Load(object interface{}) error

Load 解析 object 中的地址信息,如果是本地配置文件,则直接读取本地配置文件填充到 object

func (*Manager) LoadAndStart

func (c *Manager) LoadAndStart(object interface{}) error

func (*Manager) LoadWithPath

func (c *Manager) LoadWithPath(object interface{}, path string) error

func (*Manager) Start

func (c *Manager) Start() error

Start 启动对配置中心的监听,如果使用的是本地的文件,则启动本地文件监听, TODO: 暂时未实现本地文件监听

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL