我正在使用withRemote
將我的java應用程序連接到AWS上運行的gremlin服務器,後者使用dynamodb存儲後端。我正在連接超時幾秒鐘(〜3.3秒)後:Gremlin服務器與遠程連接關閉 - 如何自動重新連接?
org.apache.tinkerpop.gremlin.process.remote.RemoteConnectionException: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.nio.channels.ClosedChannelException]]
我需要弄清楚如何重新連接,這意味着如果連接被關閉檢測。我不知道如何檢測。當我使用圖遍歷時,是否有一種方法可以在之前發現它並重新連接,或者在配置中有一個允許自動重新連接的選項(如在此關閉之前創建新連接),以便我的應用程序始終連接?
在你需要的情況下,這是我正在做的連接 - 目前連接部分是單應用程序啓動時:
this.graph = EmptyGraph.instance();
GryoMessageSerializerV1d0 gryoMessageSerializerV1d0 = new GryoMessageSerializerV1d0(
GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance()));
this.cluster = Cluster.build().serializer(gryoMessageSerializerV1d0)
.addContactPoint(configuration.getString("graphDb.host", "localhost"))
.port(configuration.getInt("graphDb.port", 8182)).create();
this.graphTraversalSource = this.graph.traversal().withRemote(DriverRemoteConnection.using(cluster));
我會首先嚐試找出連接丟失發生的原因。另外,我正在刪除DynamoDB標記,因爲問題與它無關。 –
我想出了爲什麼我的連接丟失正在發生。我的AWS負載均衡器TCP理想超時時間爲60秒,我的大多數gremlin調用都是在不從gremlin服務器返回任何內容的情況下創建數據,因此超時。我仍然需要弄清楚如何在進行任何gremlin請求之前檢查連接是否仍處於活動狀態,如果連接未處於活動狀態,請重新連接 - 任何人都知道如何檢查該連接? – monali01