Có 2 tùy chọn kết nối kiểm soát cách trình điều khiển mongo nodejs kết nối lại sau khi kết nối không thành công
- renectTries:cố gắng kết nối lại # lần (mặc định là 30 lần)
- renectInterval:Máy chủ sẽ đợi # mili giây giữa các lần thử lại (1000 mili giây mặc định)
tham khảo tài liệu trình điều khiển mongo
Có nghĩa là mongo sẽ tiếp tục cố gắng kết nối 30 lần theo mặc định và đợi 1 giây trước mỗi lần thử lại. Đó là lý do tại sao bạn bắt đầu thấy lỗi sau 30 giây.
Bạn nên tinh chỉnh 2 thông số này dựa trên nhu cầu của bạn như mẫu này.
var MongoClient = require('mongodb').MongoClient,
f = require('util').format;
MongoClient.connect('mongodb://localhost:27017/test',
{
// retry to connect for 60 times
reconnectTries: 60,
// wait 1 second before retrying
reconnectInterval: 1000
},
function(err, db) {
var col = db.collection('t');
setInterval(function() {
col.insert({
a: 1
}, function(err, r) {
console.log("insert")
console.log(err)
col.findOne({}, function(err, doc) {
console.log("findOne")
console.log(err)
});
})
}, 1000)
});
Điều này sẽ thử 60 lần thay vì 30 lần mặc định, có nghĩa là bạn sẽ bắt đầu thấy lỗi sau 60 giây khi nó ngừng cố gắng kết nối lại.
Ghi chú bên lề:nếu bạn muốn ngăn ứng dụng / yêu cầu đợi cho đến khi hết thời gian kết nối lại, bạn phải vượt qua tùy chọn bufferMaxEntries: 0
. Cái giá phải trả cho việc này là các yêu cầu cũng bị hủy bỏ trong thời gian mạng bị gián đoạn ngắn.