本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Neptune 可讓您使用參數群組選項 neptune_query_timeout
來設定查詢的逾時 (請參閱 參數)。不過從 Java 用戶端版本 3.3.7 開始,您也可以使用類似下列的程式碼,覆寫全域逾時:
final Cluster cluster = Cluster.build("localhost")
.port(8182)
.maxInProcessPerConnection(32)
.maxSimultaneousUsagePerConnection(32)
.serializer(Serializers.GRAPHBINARY_V1D0)
.create();
try {
final GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster));
List<Object> verticesWithNamePumba = g.with(ARGS_EVAL_TIMEOUT, 500L).V().has("name", "pumba").out("friendOf").id().toList();
System.out.println(verticesWithNamePumba);
} finally {
cluster.close();
}
或者,對於字串查詢提交,程式碼將如下所示:
RequestOptions options = RequestOptions.build().timeout(500).create();
List<Result> result = client.submit("g.V()", options).all().get();
注意
如果您將查詢逾時值設得太高,特別是在無伺服器執行個體上,可能會產生非預期的成本。若沒有合理的逾時設定,您的查詢執行時間可能會比預期的長得多,進而產生您從未預期的成本。這在無伺服器執行個體上尤是如此,因為該執行個體在執行查詢時可能會縱向擴展為大型且昂貴的執行個體類型。
您可以使用符合您預期之執行階段的查詢逾時值,避免此類非預期的費用,而且只會導致異常的長時間執行逾時。
從 Neptune 引擎 1.3.2.0 版開始,Neptune 支援新的 neptune_lab_mode 參數做為 StrictTimeoutValidation
。當此參數的值為 時Enabled
,指定為請求選項或查詢提示的每個查詢逾時值不能超過參數群組中全域設定的值。在這種情況下,Neptune 會擲回 InvalidParameterException
。
當值為 時,此設定可以在 '/status' 端點的回應中確認Disabled
,而在 1.3.2.0 中,此參數的預設值為 Disabled
。