Как отслеживать проблемы с подключением Neo4j?
Я использую Neo4j Community Edition. Чтобы создать резервную копию, я должен остановить процесс Neo4j, сделать резервную копию и запустить процесс снова. Я хочу создать наблюдатель для подключения к базе данных на стороне сервера, чтобы я мог показывать пользователям некоторые сообщения о том, что БД недоступна.
Я использую драйвер https://github.com/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 ответ
Драйвер Neo4j поддерживает пул соединений с базой данных.
Когда вы запрашиваете у водителя новый сеанс, он принимает соединение из пула (или создает его при необходимости).
Здесь нет connect
или же disconnect
События.
Единственное, что вы можете сделать, это перехватить ошибку при выполнении транзакции и проверить, является ли тип ошибки SERVICE_UNAVAILABLE
( https://neo4j.com/docs/api/javascript-driver/current/variable/index.html).