带有事务超时的Neo4j驱动程序:如何检测超时事件?

问题描述 投票:0回答:1

我正在查看 Neo4j 驱动程序的最新版本,它有一个关于事务超时的好功能,即,如果它无法在时间限制内返回结果,您可以进行查询以停止。

我不清楚如何检测和恢复此类超时事件的发生(就我而言,我有许多查询来收集潜在的相关数据,并且我可以忽略太慢查询的结果)。是否有抛出特定的异常?还是有其他机制?

java neo4j graph-databases
1个回答
0
投票

有几种设置超时的方法。这是一种方法:在调用

session.beginTransaction()
时指定超时。

首先创建一个具有超时值的

TransactionConfig
。下面的示例创建了一个超时为 5 秒的配置:

TransactionConfig config = TransactionConfig.builder()
        .withTimeout(Duration.ofSeconds(5))
        .build();

然后创建一个新交易,并使用您刚刚创建的

config

try (Transaction transaction = neo4jDriver.session().beginTransaction(config)) {
    // do stuff
    transaction.commit();
}

如果超过超时,事务将中止并抛出

org.neo4j.driver.exceptions.ClientException

把它们放在一起,它可能看起来像这样:

TransactionConfig config = TransactionConfig.builder()
        .withTimeout(Duration.ofSeconds(5))
        .build();

try (Transaction transaction = neo4jDriver.session().beginTransaction(config)) {
    // do stuff
    transaction.commit();

} catch (ClientException e) {
    // handle this
}

注意:此技术 - 使用

TransactionConfig
- 适用于驱动程序,但在使用 OGM 时不可能(我也没有找到任何等效的方法)设置超时。

© www.soinside.com 2019 - 2024. All rights reserved.