【问题标题】:Neo4j Driver in playNeo4j 驱动程序在玩
【发布时间】:2018-06-05 22:05:30
【问题描述】:

我在我的 play 应用程序中使用 Neo4j java driver

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

我确实怀疑我以错误的方式使用驱动程序,我想我应该在整个应用程序范围内使用一个驱动程序,但不知道如何使用。在play框架中使用java Neo4j驱动的正确方法是什么?

【问题讨论】:

    标签: java neo4j playframework connection-pooling autocloseable


    【解决方案1】:

    Driver 接口的 Javadoc 说明:

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

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

    因此,一般来说,您应该使用单个 Driver 实例。

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

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

    【讨论】:

    • 正是我要找的东西。
    猜你喜欢
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    相关资源
    最近更新 更多