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

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

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

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

1 ответ

Решение

Javadoc для интерфейса драйвера гласит:

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

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

Так что, как правило, вы должны использовать один Driver пример.

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

class DriverFactory {
    private static Driver instance;
    public static synchronized Driver getDriver() {
        if (instance == null) {
            instance = GraphDatabase.driver(...);
        }
        return instance;
    }
}
Другие вопросы по тегам