Как отслеживать проблемы с подключением Neo4j? - PullRequest
0 голосов
/ 29 июня 2018

Я использую Neo4j Community Edition. Чтобы создать резервную копию, мне нужно остановить процесс Neo4j, сделать резервную копию и запустить процесс заново. Я хочу создать наблюдатель для подключения к базе данных на стороне сервера, чтобы я мог показывать пользователям некоторые сообщения о том, что БД недоступна.

Я использую драйвер neo4j-javascript-драйвер .

По аналогии с другими драйверами для баз данных я предположил, что 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 голосов
/ 29 июня 2018

Драйвер Neo4j поддерживает пул соединений с базой данных.

Когда вы запрашиваете у водителя новый сеанс, драйвер примет соединение из пула (или создаст его при необходимости).

Нет событий connect или disconnect.

Единственное, что вы можете сделать, это перехватить ошибку при выполнении транзакции и проверить, является ли тип ошибки SERVICE_UNAVAILABLE (https://neo4j.com/docs/api/javascript-driver/current/variable/index.html#static-variable-SERVICE_UNAVAILABLE).

...