Go mgo を使用して MongoDB Atlas のレプリカ セットに到達できないサーバーが永続的に存在する
Golang mgo ライブラリを使用して MongoDB Atlas レプリカ セットに接続する場合、「到達可能なサーバーがありません」エラーが発生することがあります。この問題は、mgo DialInfo 構造体のカスタマイズされた DialServer 関数を利用することで解決できます。
次のコード スニペットは、カスタム TLS 構成を使用してレプリカ セットへの接続を正常に確立する方法を示しています。
import ( "gopkg.in/mgo.v2" "crypto/tls" "net" ) tlsConfig := &tls.Config{} dialInfo := &mgo.DialInfo{ Addrs: []string{"prefix1.mongodb.net:27017", "prefix2.mongodb.net:27017", "prefix3.mongodb.net:27017"}, Database: "authDatabaseName", Username: "user", Password: "pass", } dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) { conn, err := tls.Dial("tcp", addr.String(), tlsConfig) return conn, err } session, err := mgo.DialWithInfo(dialInfo)
このコード:
または、mgo.ParseURL() メソッドを使用して MongoDB Atlas URI 文字列を解析することもできます。ただし、現在、この方法では SSL はサポートされていません。回避策は、解析する前に URI 文字列から ssl=true 行を削除することです。
以上がGo の mgo ライブラリを使用して MongoDB Atlas レプリカ セットに接続するときに発生する「到達可能なサーバーがありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。