2014-04-22 13 views
5

Trong bài viết running-mongodb-queries-concurrently-with-go nói rằng mgo.DialWithInfo: Tạo một phiên duy trì một nhóm kết nối socket với MongoDB, nhưng khi tôi tìm kiếm trong documentacion của hàm DialWithInfo Tôi không tìm thấy điều gì đó nói với tôi về kết nối pool, chỉ có tôi tìm thấy một cái gì đó trong chức năng quay số chức năng Dial mà nói: Phương pháp này thường được gọi là chỉ một lần cho một cụm nhất định. Các phiên tiếp theo cho cùng một cụm sau đó được thiết lập bằng cách sử dụng phương thức Mới hoặc Sao chép trên phiên thu được. Điều này sẽ làm cho chúng chia sẻ cụm cơ bản và quản lý nhóm kết nối phù hợp.Kết nối nhóm trong gói Go mgo

  • Ai đó có thể cho tôi biết cách hoạt động của các kết nối hồ bơi trên MGO và nếu có thể thiết lập hồ bơi này?
  • Có đúng là DialWithInfo tạo kết nối bể bơi hoặc chỉ là chức năng quay số tạo hồ bơi này?

Cảm ơn trước

Trả lời

8

Nhìn vào source code for the Dial function calls, bạn có thể thấy rằng Dial chức năng gọi DialWithTimeout chức năng mà các cuộc gọi DialWithInfo chức năng. Vì vậy, để trả lời câu hỏi của bạn về sự khác biệt giữa các hàm, có vẻ như Dial là một trình bao bọc tiện lợi cho DialWithTimeout, do đó nó là một trình bao bọc tiện lợi cho DialWithInfo, vì vậy chúng dẫn đến cùng một kết nối.

Cách quản lý nhóm kết nối đó, bạn đã có nó ngay trong câu hỏi của mình.

Các phiên tiếp theo cho cùng một cụm sau đó được thiết lập bằng phương pháp Mới hoặc Sao chép trên phiên thu được. Điều này sẽ làm cho chúng chia sẻ cụm cơ bản và quản lý nhóm kết nối phù hợp.

Vì vậy, một cuộc gọi duy nhất để Dial hoặc DialWithTimeout hay DialWithInfo sẽ thiết lập các hồ bơi kết nối, nếu bạn cần nhiều hơn một phiên, sử dụng session.New() hoặc session.Copy() phương pháp để có được nó từ phiên trở lại từ bất cứ chức năng quay số bạn đã chọn để sử dụng.

+0

Tuy nhiên, '.Copy()' nên được sử dụng vì nó vẫn giữ lại xác thực, nếu có. –

Các vấn đề liên quan