繁体   English   中英

Neo4j驱动程序正在运行

[英]Neo4j Driver in play

我在我的播放应用程序中使用Neo4j Java 驱动程序。

目前,我为每个控制器(即每个http调用)初始化一个新的驱动程序。 当autoclosesable close方法运行时,它似乎阻塞了整个调用约两秒钟。 在不关闭驱动程序的情况下运行(显然是个坏主意),我的测试时间从25秒减少到了5秒。

我确实怀疑我以错误的方式使用了驱动程序,我想我应该在整个应用程序中使用一个驱动程序,但无法弄清楚如何使用。 在play框架中使用java Neo4j驱动程序的正确方法是什么?

驱动程序接口的Javadoc指出:

驱动程序实现通常是线程安全的,充当创建会话的模板并托管连接池。 驱动程序将所有配置和身份验证设置保持不变。 如果需要不同的设置,则应创建一个新的Driver实例。

驱动程序为每个远程Neo4j服务器维护一个连接池。 因此,使用驱动程序的最有效方法是在应用程序中使用同一实例。

因此,通常应使用一个Driver实例。

共享同一实例的一种方法是实现提供单例 Driver实例的工厂类。 这是一个非常基本的线程安全示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM