2015-11-04 64 views
4

我目前正在試用Google Cloud PubSub的go library並同時查閱文檔。Go酒吧子庫中的PullWait行爲?

我的代碼測試PullWait函數,根據documentation做以下行爲:

PullWait從訂閱拉消息。如果訂閱隊列中沒有足夠的消息,它將會阻塞,直到至少n條消息到達或發生超時,並且n不能大於100.

但是,我的測試表明,無論指定的值n,我總是立即收到m消息,其中m < = n。我在這裏錯過了什麼嗎?

摘錄的代碼中使用:

msgs, err := pubsub.PullWait(subCtx, subscriptionName, 50) 
if err != nil { 
    log.Printf("Error when trying to pull messages from subscription: %v", err) 
} else { 
    for _, msg := range msgs { 
     str := string(msg.Data) 
     log.Printf("Message [msg-id=%s]: '%v'", msg.ID, str) 

     if err := pubsub.Ack(ctx, subscriptionName, msg.AckID); err != nil { 
      log.Printf("Unable to acknowledge message [ack-id=%s]: %v", msg.AckID, err) 
     } 
    } 
} 

,並在時間隊列只包含一個消息,該消息被rightaway返回到我:

2015年11月4日11點45分十五秒消息[msg-id = 2384294654226]:'你好我的世界我的朋友'

回答

2

原來文檔不正確。 PullWait使用returnImmediately設置爲false來調用潛在的pull method,這意味着它等待至少收到一條消息(但不超過n條消息)。我提交了一個要求進行更正的請求。