我有一个关于控制查询和超时问题的问题。我想要实现的是我可以控制查询超时' - 我想设置它让我们说3秒钟,如果查询需要更长的时间,我会得到异常/无论如何。
到目前为止,我尝试了无数种方式,即使重写了一些api来到RestRequest中的客户端设置它......但我没有事务控制。
我没有发布我已经使用/尝试过的任何组件版本,因为改变它并不是什么大不了的事。唯一的限制是java版本6。
请发布一些我可以使用的建议/方法......因为我没有想法。
干杯!
答案 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毫秒。
我刚刚对Neo4j 2.2.5的legacy Cypher HTTP endpoint和transactional 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将使用较短的超时,因此在属性文件中指定一个较大的超时。