在 Nodejs 中重建连接,pg-promise
rebuilding connections in Nodejs, pg-promise
在使用 pg-promise
建立 master/replica postgres 连接的情况下,有没有办法在副本中断的情况下重建这些连接?
而不是在 initOptions 传递的错误函数中执行 process.exitCode = 1;
并仅在服务启动时重建工作连接...是否有更好的方法来删除失败的连接(如果它是副本和 [=18 则更好=] 如果它是小学)?
const initOptions = {
// global event notification;
error: (error, e) => {
if (e.cn) {
//log
}
process.exitCode =1;
}
};
//singleton
const pgp = require('pg-promise')(initOptions);
// then for each database in config, we connect and start the service
模块pg-promise is built on top node-postgres,使用连接池,能够自动恢复断开的连接。
为此,您不需要任何帮助。一旦连接再次可用,您的查询将再次开始成功。
并且根据您寻求的逻辑,您可以 process.exit()
专门在主连接丢失时执行,同时忽略(或仅记录)副本连接丢失。
假设两者是通过单独的Database对象使用的,您可以借助您设置的dc
参数-Database Context来区分它们可以在对象的构造过程中传入,可以是任何东西。
示例:
const dbPrimary = pgp(primaryConnection, 'primary');
const dbReplica = pgp(replicaConnection, 'replica');
然后在全局 error 处理程序中:
const initOptions = {
error: (err, e) => {
if(e.cn) {
// connectivity issue:
console.log(e.dc, 'connection error:', err);
if(e.dc === 'primary') {
process.exit(1);
}
}
}
};
在使用 pg-promise
建立 master/replica postgres 连接的情况下,有没有办法在副本中断的情况下重建这些连接?
而不是在 initOptions 传递的错误函数中执行 process.exitCode = 1;
并仅在服务启动时重建工作连接...是否有更好的方法来删除失败的连接(如果它是副本和 [=18 则更好=] 如果它是小学)?
const initOptions = {
// global event notification;
error: (error, e) => {
if (e.cn) {
//log
}
process.exitCode =1;
}
};
//singleton
const pgp = require('pg-promise')(initOptions);
// then for each database in config, we connect and start the service
模块pg-promise is built on top node-postgres,使用连接池,能够自动恢复断开的连接。
为此,您不需要任何帮助。一旦连接再次可用,您的查询将再次开始成功。
并且根据您寻求的逻辑,您可以 process.exit()
专门在主连接丢失时执行,同时忽略(或仅记录)副本连接丢失。
假设两者是通过单独的Database对象使用的,您可以借助您设置的dc
参数-Database Context来区分它们可以在对象的构造过程中传入,可以是任何东西。
示例:
const dbPrimary = pgp(primaryConnection, 'primary');
const dbReplica = pgp(replicaConnection, 'replica');
然后在全局 error 处理程序中:
const initOptions = {
error: (err, e) => {
if(e.cn) {
// connectivity issue:
console.log(e.dc, 'connection error:', err);
if(e.dc === 'primary') {
process.exit(1);
}
}
}
};