2014-04-22 37 views
5

在文章running-mongodb-queries-concurrently-with-go說,mgo.DialWithInfo:創建它保持套接字連接到MongoDB的池會話,但是當我在功能DialWithInfodocumentacion找我不找東西說說關於連接池的問題,只有我在Dial函數撥號函數中發現了一些內容:這種方法通常只針對給定的集羣調用一次。然後在獲得的會話上使用New或Copy方法建立到同一集羣的更多會話。這將使他們共享底層集羣,並適當地管理連接池。連接池

  • 有人可以說我如何在MGO上的游泳池連接,如果可能的話建立這個池?
  • DialWithInfo確實創建池連接還是僅創建此池的撥號函數?

由於提前

回答

8

展望source code for the Dial function calls,你可以看到Dial函數調用DialWithTimeout函數調用DialWithInfo功能。因此,要回答您關於函數之間差異的問題,Dial似乎是DialWithTimeout的便捷包裝,它是DialWithInfo的便利包裝,因此它們會生成相同的連接池。

至於如何管理連接池,你已經在你的問題中得到了正確的答案。

然後在獲得的會話上使用New或Copy方法建立到同一集羣的更多會話。這將使他們共享底層集羣,並適當地管理連接池。

所以要DialDialWithTimeoutDialWithInfo單一的通話將建立連接池,如果你需要一個以上的會議,使用session.New()session.Copy()方法從會議上獲得它從你選擇哪個撥號功能恢復使用。

+0

但是,應該使用'.Copy()',因爲它保留了身份驗證(如果適用)。 –