go-zookeeper Connect返回没有有效连接

时间:2017-01-07 20:03:14

标签: go apache-zookeeper

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

我的问题是每当我使用例如:

连接到zookeeper时
zoo_keeper, _, err := zk.Connect(s, time.Second)

函数立即返回并且没有报告错误,但是还没有实际的有效连接。现在,例如,如果我想创建znodes,在执行此操作之前,我需要检查以确保我有一个有效的连接?

1 个答案:

答案 0 :(得分:2)

在尝试了几件事之后,感谢Imesha的建议,我可以用渠道达到我想要的效果。以下是我的示例代码。

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
}