如何监控Neo4j的连接问题?

时间:2018-06-29 13:31:38

标签: javascript node.js database neo4j bolt

我使用Neo4j社区版。要创建备份,我必须停止Neo4j进程,进行备份,然后再次启动该进程。我想在服务器端创建一个到数据库连接的监视程序,以便向用户显示有关数据库不可用的警报消息。

我使用驱动程序neo4j-javascript-driver

类似于其他数据库驱动程序,我认为Neo4j具有类似于以下内容的东西:

const driver = neo4j.driver('bolt://localhost', neo4j.auth.basic('neo4j', 'neo4j'));
const session = driver.session();

session.on('disconnect', () => console.log('disconnected'));

但是文档中不包含任何内容。如果Neo4j没有类似的东西,那么我想使用自定义的socket.io连接来连接到螺栓端口,例如:

const ioc = require('socket.io-client');

const NEO4J_BOLT_URL = 'https://localhost:7687';

const client = ioc.connect(NEO4J_BOLT_URL, {
  path: '/',
  transports: ['websocket'],
});

client.on('connect', () => console.log('connected'));
client.on('disconnect', () => console.log('disconnected'));

client.on('reconnect', () => console.log('reconnected'));
client.on('reconnect_error', (err) => console.log('attempt to reconnect has failed', err));

(不起作用)

有人可以帮助我在此驱动程序中实现类似的功能吗?我需要的主要是Neo4j数据库是否存在时的回调。

1 个答案:

答案 0 :(得分:1)

Neo4j的驱动程序维护着一个到数据库的连接池。

当您请求驱动程序进行新的会话时,驱动程序将从池中建立连接(或在需要时创建一个连接)。

没有connectdisconnect事件。

您唯一能做的就是在执行交易时捕获错误,并检查错误的类型是否为SERVICE_UNAVAILABLEhttps://neo4j.com/docs/api/javascript-driver/current/variable/index.html#static-variable-SERVICE_UNAVAILABLE)。