我有一个关于 zookeeper 的问题,我正在尝试使用 go-zookeeper 实现简单的服务发现,我正在使用 go-zookeeper:https://github.com/samuel/go-zookeeper

我的问题是每当我使用例如连接到 zookeeper 时:

zoo_keeper, _, err := zk.Connect(s, time.Second) 

函数立即返回,没有报错,但还没有真正有效的连接。现在,例如,如果我想创建 znode,我需要检查什么以确保在这样做之前我有一个有效的连接?

请您参考如下方法:

在尝试了几件事之后,感谢 Imesha 的建议,我可以使用 channel 实现我想要的。下面是我的示例代码。

func zk_connect(zk_server string) (*zk.Conn, error) { 
    zoo_keeper, session, err := zk.Connect([]string{zk_server}, time.Second) 
    if err != nil { 
        return nil, err 
    } 
    for event := range session { 
        if event.State == zk.StateConnected { 
            log.Printf("zookeeper State: %s\n", event.State) 
            break 
        } 
    } 
    return zoo_keeper, nil 
} 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!