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;
}
}