2017-01-07 1 views
0

가 나는 사육사에 관한 질문이, 내가 이동에서 사육사와 간단한 서비스 검색을 구현하기 위해 노력하고 유효한 연결없이 반환 예를 들어 동물원에이동-사육사 연결, 나는 이동 - 사육사를 사용하고

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

즉시 반환되며 오류는보고되지 않지만 실제 유효한 연결은 없습니다 예를 들어 znode를 만들고 싶다면, 올바른 연결이되어 있는지 확인하기 위해 무엇을해야합니까?

+0

'err! = nil'인지 확인 했습니까? 오류가 발생할 수 있습니다. –

+0

@ImeshaSudasingha 예 확인 했으므로 오류가 없습니다. 지금 나는 연결이 연결되어 있지 않을 수도있는 연결 개체를 반환한다고 가정합니다. java API의 동물원 생성자와 비슷합니다. 그러나 내 가정이 옳은지 확실하지 않습니다. – silentnights

+1

아 ... 네. 생성자는 즉시 반환됩니다. 감시자를 추가하고 synConnected 이벤트를 확인해야합니다. –

답변

1

이 메샤의 제안 덕분에 여러 가지를 시도한 후에 채널을 사용하여 원하는 것을 얻을 수있었습니다. 아래는 샘플 코드입니다.

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 
} 
관련 문제