Go mgo包中的连接池

时间:2014-04-22 15:25:03

标签: mongodb go mgo

在文章running-mongodb-queries-concurrently-with-go中说mgo.DialWithInfo:创建一个会话来维护一个到MongoDB的套接字连接池,但是当我在函数documentacion中查找DialWithInfo时我找不到关于池连接的话,只有我在Dial函数拨号函数中找到了一些内容:这个方法通常只针对给定的集群调用一次。然后,在获得的会话上使用New或Copy方法建立到同一群集的进一步会话。这将使它们共享底层集群,并适当地管理连接池。

  • 有人能说我如何在MGO上运行池连接,是否可以设置此池?
  • DialWithInfo是创建池连接还是仅创建此池的Dial函数?

先谢谢

1 个答案:

答案 0 :(得分:9)

查看source code for the Dial function calls,您可以看到Dial函数调用调用DialWithTimeout函数的DialWithInfo函数。因此,为了回答关于函数之间差异的问题,似乎DialDialWithTimeout的便捷包装器,而DialWithInfo又是Dial的便利包装器,因此它们会导致相同的连接池。

至于如何管理该连接池,您的问题就是正确的。

  

然后使用获取的会话上的New或Copy方法建立到同一群集的进一步会话。这将使他们共享底层集群,并适当地管理连接池。

因此,对DialWithTimeoutDialWithInfosession.New()的单个调用将建立连接池,如果您需要多个会话,请使用session.Copy()或{{1从您选择使用的任何一个Dial函数返回的会话中获取它的方法。