我正在使用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