在文章running-mongodb-queries-concurrently-with-go中说mgo.DialWithInfo:创建一个会话来维护一个到MongoDB的套接字连接池,但是当我在函数documentacion中查找DialWithInfo时我找不到关于池连接的话,只有我在Dial函数拨号函数中找到了一些内容:这个方法通常只针对给定的集群调用一次。然后,在获得的会话上使用New或Copy方法建立到同一群集的进一步会话。这将使它们共享底层集群,并适当地管理连接池。
先谢谢
答案 0 :(得分:9)
查看source code for the Dial function calls,您可以看到Dial
函数调用调用DialWithTimeout
函数的DialWithInfo
函数。因此,为了回答关于函数之间差异的问题,似乎Dial
是DialWithTimeout
的便捷包装器,而DialWithInfo
又是Dial
的便利包装器,因此它们会导致相同的连接池。
至于如何管理该连接池,您的问题就是正确的。
然后使用获取的会话上的New或Copy方法建立到同一群集的进一步会话。这将使他们共享底层集群,并适当地管理连接池。
因此,对DialWithTimeout
或DialWithInfo
或session.New()
的单个调用将建立连接池,如果您需要多个会话,请使用session.Copy()
或{{1从您选择使用的任何一个Dial函数返回的会话中获取它的方法。