MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để tránh ngoại lệ Đã đến cuối luồng sớm bằng trình điều khiển Java mongoDB 3.4+ hoặc 3.6+? (trong khi chèn)

Tùy chọn số 1

Lỗi đã được giải quyết bằng định dạng kết nối (sử dụng các tham số maxIdleTimeMS , sslauthSource ):

MongoClient mongoClient = MongoClients.create("mongodb://user:[email protected]:27017,cluster0-shard-00-01-ox90k.mongodb.net:27017,cluster0-shard-00-02-ox90k.mongodb.net:27017/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true&maxIdleTimeMS=5000");

Hoặc bạn có thể định cấu hình thông tin xác thực theo lập trình (sử dụng trình điều khiển java 3.6+ phiên bản):

admin - là cơ sở dữ liệu nơi người dùng được xác định trong Atlas;

user - là tên người dùng;

mypassword - là mật khẩu;

MongoCredential credential = MongoCredential.createCredential("user", "admin", "mypassword".toCharArray());
        MongoClientSettings settings = MongoClientSettings.builder()
                .credential(credential)
                .retryWrites(true)
                .applyToConnectionPoolSettings(builder ->
                        builder.maxConnectionIdleTime(5000, TimeUnit.MILLISECONDS))
                .applyToSslSettings(builder -> builder.enabled(true))
                .applyToClusterSettings(builder -> {
                    builder.hosts(Arrays.asList(
                            new ServerAddress("cluster0-shard-00-00-ox90k.mongodb.net", 27017),
                            new ServerAddress("cluster0-shard-00-01-ox90k.mongodb.net", 27017),
                            new ServerAddress("cluster0-shard-00-02-ox90k.mongodb.net", 27017)
                    ));
                    builder.requiredReplicaSetName("Cluster0-shard-0");
                })
                .build();

        MongoClient mongoClient = MongoClients.create(settings);

Tùy chọn số 2

Hơn nữa, lỗi có thể được giải quyết bằng cách gọi mongodb.MongoClient.connect một lần, không phải từng yêu cầu. Cố gắng cấu trúc lại mã của bạn để gọi kết nối một lần thay vì mỗi lần trong khi chèn tài liệu cụ thể. Trong trường hợp này, bạn có thể tránh bất kỳ thông số bổ sung nào từ tùy chọn số 1.

Vừa đủ:

mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority

Đặc biệt cảm ơn sự giúp đỡ hỗ trợ mongoDB .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb 4+ findOneAndUpdate () returnNewDocument không hoạt động

  2. MongoDB Tính Giá trị từ Hai Mảng, Sắp xếp và Giới hạn

  3. Làm thế nào để chuyển đổi mongo ObjectId .toString mà không bao gồm trình bao bọc 'ObjectId ()' - chỉ có Giá trị?

  4. 2 cách để giới hạn tài liệu được trả lại trong MongoDB

  5. Các đối tượng lồng nhau trong lược đồ mongoose