2014-04-22 73 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()',因为它保留了身份验证(如果适用)。 –