Neo4j Водитель в игре - PullRequest
       30

Neo4j Водитель в игре

0 голосов
/ 06 июня 2018

Я использую драйвер Neo4j java в своем игровом приложении.

В настоящее время я инициализирую новый драйвер для каждого контроллера (т.е. для каждого http-вызова).Когда запускается метод autoclosable close, кажется, он блокирует весь вызов почти на две секунды.Работа без закрытия драйверов (очевидно, плохая идея) сокращает мои тесты с 25 секунд до 5.

Я подозреваю, что я использую драйвер неправильно, и я думаю, что я должен использовать одно приложение драйвера, ноне могу понять, как.Как правильно использовать драйвер java Neo4j в игровой среде?

1 Ответ

0 голосов
/ 06 июня 2018

Javadoc для интерфейса Driver сообщает:

Реализации драйвера, как правило, ориентированы на многопотоковое исполнение, служат шаблоном для создания сеанса и размещают пул соединений.Все настройки конфигурации и аутентификации остаются неизменными для водителя.Если требуются другие настройки, следует создать новый экземпляр драйвера.

Драйвер поддерживает пул соединений для каждого удаленного сервера Neo4j.Поэтому наиболее эффективный способ использования драйвера - это использование одного и того же экземпляра в приложении.

Поэтому, как правило, вы должны использовать один экземпляр Driver.

Один из способов совместно использовать один и тот же экземпляр - реализовать фабричный класс, который предоставляет экземпляр singleton Driver.Вот очень простой потокобезопасный пример:

class DriverFactory {
    private static Driver instance;
    public static synchronized Driver getDriver() {
        if (instance == null) {
            instance = GraphDatabase.driver(...);
        }
        return instance;
    }
}
...