package main import ( "context" "fmt" "time" "git.wecise.com/wecise/common/etcd" ) func main() { etcdPath := "47.92.151.165:2379" etcdUser := "" etcdPass := "" etcdFile := "/matrix/etc/omdb" etcdURL := "etcd://" + etcdUser + "@" + etcdPath + "" + etcdFile fmt.Println(etcdURL) cli, err := etcd.NewClient(etcdPath, etcdUser, etcdPass) if err != nil { fmt.Println(err) return } val, err := cli.Get(etcdFile) if err != nil { fmt.Println(err) return } fmt.Println(fmt.Sprintf("load config from %s", etcdURL)) cache_value := []string{""} on_change := func(value string) { if cache_value[0] != value { fmt.Println("config changed:\r\n", value) } } on_change(val) ch := cli.Watch(context.Background(), etcdFile, false) go func() { fmt.Println(fmt.Sprintf("watching %s", etcdURL)) for { select { case evt := <-ch: on_change(evt.Node.Value) } } }() for { time.Sleep(1 * time.Minute) } }