watch.go 923 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package watch
  2. import (
  3. "fmt"
  4. "github.com/samuel/go-zookeeper/zk"
  5. "time"
  6. )
  7. /*
  8. 1.如果即设置了全局监听有设置了部分监听,那么最终是都会触发的,并且全局监听在先执行
  9. 2.如果设置了监听子节点,那么事件的触发是先子节点后父节点
  10. */
  11. func main() {
  12. conn, _, err := zk.Connect(hosts, time.Second*5)
  13. defer conn.Close()
  14. if err != nil {
  15. fmt.Println(err)
  16. return
  17. }
  18. _, _, ech, err := conn.ExistsW(path1) //调用conn.ExistsW(path) 或GetW(path)为对应节点设置监听,该监听只生效一次
  19. if err != nil {
  20. fmt.Println(err)
  21. return
  22. }
  23. go watchCreataNode(ech)
  24. create(conn, path1, data1)
  25. }
  26. func watchCreataNode(ech <-chan zk.Event){
  27. event:=<-ech
  28. fmt.Println("*******************")
  29. fmt.Println("path:", event.Path)
  30. fmt.Println("type:", event.Type.String())
  31. fmt.Println("state:", event.State.String())
  32. fmt.Println("-------------------")
  33. }