You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
kratos/pkg/conf/paladin
chenzhihui 9e060edc2d replace pkg name to go-kratos 5 years ago
..
apollo replace pkg name to go-kratos 5 years ago
README.md feat: introduced apollo for paladin with driver registration. 5 years ago
client.go add conf paladin 6 years ago
default.go feat: introduced apollo for paladin with driver registration. 5 years ago
driver.go feat: introduced apollo for paladin with driver registration. 5 years ago
example_test.go replace pkg name to go-kratos 5 years ago
file.go fix for file_test (#486) 5 years ago
file_test.go fix for file_test (#486) 5 years ago
helper.go add conf paladin 6 years ago
helper_test.go add conf paladin 6 years ago
map.go feat: introduced apollo for paladin with driver registration. 5 years ago
map_test.go replace pkg name to go-kratos 5 years ago
mock.go fix:NewMock return Client type 5 years ago
mock_test.go replace pkg name to go-kratos 5 years ago
register.go feat: introduced apollo for paladin with driver registration. 5 years ago
toml.go feat: introduced apollo for paladin with driver registration. 5 years ago
value.go feat: introduced apollo for paladin with driver registration. 5 years ago
value_test.go add conf paladin 6 years ago

README.md

paladin

项目简介

paladin 是一个config SDK客户端,包括了file、mock几个抽象功能,方便使用本地文件或者sven\apollo配置中心,并且集成了对象自动reload功能。

local files:

demo -conf=/data/conf/app/msm-servie.toml
// or dir
demo -conf=/data/conf/app/

注:使用远程配置中心的用户在执行应用,如这里的demo时务必不要带上-conf参数,具体见下文远程配置中心的例子

local file example:

type exampleConf struct {
	Bool   bool
	Int    int64
	Float  float64
	String string
}

func (e *exampleConf) Set(text string) error {
	var ec exampleConf
	if err := toml.Unmarshal([]byte(text), &ec); err != nil {
		return err
	}
	*e = ec
	return nil
}

func ExampleClient() {
	if err := paladin.Init(); err != nil {
		panic(err)
	}
	var (
		ec   exampleConf
		eo   exampleConf
		m    paladin.TOML
		strs []string
	)
	// config unmarshal
	if err := paladin.Get("example.toml").UnmarshalTOML(&ec); err != nil {
		panic(err)
	}
	// config setter
	if err := paladin.Watch("example.toml", &ec); err != nil {
        panic(err)
    }
	// paladin map
	if err := paladin.Watch("example.toml", &m); err != nil {
        panic(err)
    }
	s, err := m.Value("key").String()
	b, err := m.Value("key").Bool()
	i, err := m.Value("key").Int64()
	f, err := m.Value("key").Float64()
	// value slice
	err = m.Value("strings").Slice(&strs)
	// watch key
	for event := range paladin.WatchEvent(context.TODO(), "key") {
		fmt.Println(event)
	}
}

remote config center example:

type exampleConf struct {
	Bool   bool
	Int    int64
	Float  float64
	String string
}

func (e *exampleConf) Set(text string) error {
	var ec exampleConf
	if err := yaml.Unmarshal([]byte(text), &ec); err != nil {
		return err
	}
	*e = ec
	return nil
}

func ExampleApolloClient() {
	/*
		pass flags or set envs that apollo needs, for example:

		```
		export APOLLO_APP_ID=SampleApp
		export APOLLO_CLUSTER=default
		export APOLLO_CACHE_DIR=/tmp
		export APOLLO_META_ADDR=localhost:8080
		export APOLLO_NAMESPACES=example.yml
		```
	*/

	if err := paladin.Init(apollo.PaladinDriverApollo); err != nil {
		panic(err)
	}
	var (
		ec   exampleConf
		eo   exampleConf
		m    paladin.Map
		strs []string
	)
	// config unmarshal
	if err := paladin.Get("example.yml").UnmarshalYAML(&ec); err != nil {
		panic(err)
	}
	// config setter
	if err := paladin.Watch("example.yml", &ec); err != nil {
        panic(err)
    }
	// paladin map
	if err := paladin.Watch("example.yml", &m); err != nil {
        panic(err)
    }
	s, err := m.Value("key").String()
	b, err := m.Value("key").Bool()
	i, err := m.Value("key").Int64()
	f, err := m.Value("key").Float64()
	// value slice
	err = m.Value("strings").Slice(&strs)
	// watch key
	for event := range paladin.WatchEvent(context.TODO(), "key") {
		fmt.Println(event)
	}
}
编译环境
  • 请只用 Golang v1.12.x 以上版本编译执行
依赖包