Neo4j DB - 客户端连接

时间:2015-10-07 14:22:11

标签: java spring jdbc neo4j

我有一个关于控制查询和超时问题的问题。我想要实现的是我可以控制查询超时' - 我想设置它让我们说3秒钟,如果查询需要更长的时间,我会得到异常/无论如何。

到目前为止,我尝试了无数种方式,即使重写了一些api来到RestRequest中的客户端设置它......但我没有事务控制。

我没有发布我已经使用/尝试过的任何组件版本,因为改变它并不是什么大不了的事。唯一的限制是java版本6。

请发布一些我可以使用的建议/方法......因为我没有想法。

干杯!

2 个答案:

答案 0 :(得分:4)

您可以使用以下设置在conf/neo4j-server.properties中配置交易超时:

org.neo4j.server.transaction.timeout=NUMBER_OF_SECONDS_HERE

文档here

中提供了更多信息

修改

您可以通过在Neo4j服务器上启用执行保护并在您的请求中添加max-execution-time标头来控制每个查询的超时:

conf/neo4j-server.properties集合中:

org.neo4j.server.webserver.limit.executiontime=MAX_POSSIBLE_MS_HERE

conf/neo4j.properties集合中:

execution_guard_enabled=true

然后添加标题max-execution-time=100,该查询的超时时间仅为100毫秒。

更多可用信息herehere

我刚刚对Neo4j 2.2.5的legacy Cypher HTTP endpointtransactional Cypher endpoint进行了测试。

答案 1 :(得分:2)

根据我测试的内容(neo4j 2.2.2),您似乎需要设置以下两项:

./conf/neo4j.properties中的

execution_guard_enabled=true

./conf/neo4j-server.properties

org.neo4j.server.webserver.limit.executiontime={timeout_in_seconds}

(注意:这个数字是以秒为单位,而不是毫秒)

在查询特定超时之前,添加到请求的标头中,将起作用。

`max-execution-time={timeout_in_milliseconds}`

Neo4j将使用较短的超时,因此在属性文件中指定一个较大的超时。