私はwithRemote
を使用して、JavaアプリケーションをDynamodbストレージバックエンドを使用してAWSで実行されているgremlinサーバーに接続しています。私は、数秒(〜3.3秒)の後に接続タイムアウトを取得しています:私は、接続が閉じているかどうかを検出することを意味する再接続する方法を把握する必要がありGremlinサーバーwithリモート接続 - 自動的に再接続する方法?
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