<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                > ### 十一例 Zookeeper操作 ~~~ package main import ( "github.com/samuel/go-zookeeper/zk" "time" "fmt" ) var conn *zk.Conn func callback(event zk.Event) { //fmt.Println("*******************") //fmt.Println("path:", event.Path) //fmt.Println("type:", event.Type.String()) //fmt.Println("state:", event.State.String()) //fmt.Println("-------------------") } func init() { servers := []string{"192.168.1.170:2181", "192.168.1.171:2181", "192.168.1.172:2181"} option := zk.WithEventCallback(callback) var err error if conn, _, err = zk.Connect(servers, time.Second*5, option); err != nil { fmt.Println(err) return } } /** path 節點 data 節點數據 flags有4種取值: 0:永久,除非手動刪除 zk.FlagEphemeral = 1:短暫,session斷開則改節點也被刪除 zk.FlagSequence = 2:會自動在節點后面添加序號 3:Ephemeral和Sequence,即,短暫且自動添加序號 */ func zkCreate(path string, data []byte, flags int32, ) { p, err := conn.Create(path, data, flags, zk.WorldACL(zk.PermAll)) if err != nil { fmt.Println(err) } fmt.Println(p) } func zkGet(path string) { b, stat, err := conn.Get(path) if err != nil { fmt.Println(err) } fmt.Println("節點數據:", string(b)) fmt.Println("節點信息", stat.Czxid, stat.Version) } func zkGetChildren(path string) { b, stat, err := conn.Children(path) if err != nil { fmt.Println(err) } fmt.Println("節點數據:", b) fmt.Println("節點信息", stat.Czxid, stat.Version) } func zkSet(path string, data []byte) { _, stat, err := conn.Get(path) if err != nil { fmt.Println(err) } stat, err = conn.Set(path, data, stat.Version) if err != nil { fmt.Println(err) } fmt.Println(stat) } func zkDelete(path string, version int32) { if version == -1 { _, stat, err := conn.Get(path) if err != nil { fmt.Println(err) } version = stat.Version } if err := conn.Delete(path, version); err != nil { fmt.Println(path, err) } else { fmt.Println("Delete OK") } } func zkListenOne(path string) { //調用conn.ExistsW(path) 或GetW(path)為對應節點設置監聽,該監聽只生效一次 _, _, _, err := conn.ExistsW(path) if err != nil { fmt.Println(err) return } } func zkListenOneChannel(path string) { _, _, ch, err := conn.ExistsW(path) if err != nil { fmt.Println(err) return } go func() { event := <-ch fmt.Println("*******************") fmt.Println("path:", event.Path) fmt.Println("type:", event.Type.String()) fmt.Println("state:", event.State.String()) fmt.Println("-------------------") }() } func main() { //TODO : 監聽事件(只生效一次) //zkListenOne("/data") //TODO : 創建節點 zkCreate("/data", []byte("123"), 0) zkCreate("/data/u1", []byte("123"), 2) zkCreate("/data/u1", []byte("123"), 2) zkCreate("/data/u1", []byte("123"), 2) zkCreate("/data/u1", []byte("123"), 2) time.Sleep(time.Second * 100) //time.Sleep(time.Second * 60) //TODO : 往節點添加數據 //zkSet("/data/4", []byte("b3")) //TODO : 開啟一個協程處理chanel中傳來的event事件 //zkListenOneChannel("/data") //TODO : 刪除節點 //zkDelete("/data", -1) //TODO : 獲取節點數據 //zkGet("/data") //TODO : 獲取子節點 //zkGetChildren("/data") //zkDeleteAll("/") } func zkDeleteAll(path string) { b, _, _, err := conn.ChildrenW(path) if err != nil { return } for _, v := range b { zkDeleteAll2(path + v) zkDelete(path+v, -1) } } func zkDeleteAll2(path string) { b, _, _, err := conn.ChildrenW(path) if err != nil { return } for _, v := range b { zkDeleteAll2(path + "/" + v) zkDelete(path+"/"+v, -1) } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看