2023-12-21 15:11:05 +08:00
|
|
|
# koanf-nacos-provider
|
2023-12-21 14:27:05 +08:00
|
|
|
|
|
|
|
|
## introduction
|
2023-12-21 15:11:05 +08:00
|
|
|
koanf的Nacos服务提供者。
|
2023-12-21 14:27:05 +08:00
|
|
|
|
|
|
|
|
## install
|
|
|
|
|
```go
|
2023-12-21 15:03:25 +08:00
|
|
|
go get github.com/cowardmrx/koanf-nacos-provider
|
2023-12-21 14:27:05 +08:00
|
|
|
```
|
|
|
|
|
## usage
|
|
|
|
|
```go
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/knadh/koanf/parsers/yaml"
|
|
|
|
|
"github.com/knadh/koanf/v2"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
k = koanf.New(".")
|
|
|
|
|
conf = YourConfig{}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type YourConfig struct {
|
|
|
|
|
// Fields
|
|
|
|
|
Username string `yaml:"username"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func main() {
|
2024-01-03 10:36:20 +08:00
|
|
|
np,err := Provider(Config{
|
2023-12-21 14:27:05 +08:00
|
|
|
Host: "ip or domain",
|
|
|
|
|
Port: 8848,
|
|
|
|
|
NamespaceId: "",
|
|
|
|
|
Group: "",
|
|
|
|
|
ConfigName: "",
|
|
|
|
|
})
|
2024-01-03 10:36:20 +08:00
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Println("get provider failed: ",err.Error())
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-12-21 14:27:05 +08:00
|
|
|
|
|
|
|
|
if err := k.Load(np, yaml.Parser()); err != nil {
|
|
|
|
|
// error
|
|
|
|
|
fmt.Println(fmt.Errorf("error: %w", err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := k.Unmarshal("", &conf); err != nil {
|
|
|
|
|
// error
|
|
|
|
|
fmt.Println(fmt.Errorf("error: %w", err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// watch
|
|
|
|
|
if err := np.Watch(func(data interface{}, err error) {
|
|
|
|
|
|
|
|
|
|
k = koanf.New(".")
|
|
|
|
|
if err = k.Load(np, yaml.Parser()); err != nil {
|
|
|
|
|
// error
|
|
|
|
|
fmt.Println(fmt.Errorf("error: %w", err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
err = k.Unmarshal("", &conf)
|
|
|
|
|
if err != nil {
|
|
|
|
|
// error
|
|
|
|
|
fmt.Println(fmt.Errorf("error: %w", err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fmt.Println("2 ", conf.Username)
|
|
|
|
|
|
|
|
|
|
// do something
|
|
|
|
|
|
|
|
|
|
}); err != nil {
|
|
|
|
|
// error
|
|
|
|
|
fmt.Println(fmt.Errorf("error: %w", err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
```
|