我有一个关于zookeeper的问题,我正在尝试使用zookeeper实现简单的服务发现,我正在使用go-zookeeper:https://github.com/samuel/go-zookeeper
我的问题是每当我使用例如:
连接到zookeeper时zoo_keeper, _, err := zk.Connect(s, time.Second)
函数立即返回并且没有报告错误,但是还没有实际的有效连接。现在,例如,如果我想创建znodes,在执行此操作之前,我需要检查以确保我有一个有效的连接?
答案 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
}