Сервер Gremlin с удаленным удаленным подключением - как автоматически восстановить соединение?
Я использую withRemote
подключить мое java-приложение к серверу gremlin, работающему в AWS, с внутренним хранилищем DynamodB. Я получаю тайм-аут соединения через несколько секунд (~3,3 секунды):
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));
1 ответ
Я чувствую, что эта проблема уже решена с connection.keepAlive
Вариант конфигурации. По умолчанию он равен 180 секундам, поэтому он больше, чем ваш тайм-аут 60 секунд в вашем балансировщике нагрузки, поэтому он сдается.
Тем не менее, водитель должен переподключиться самостоятельно. Это постоянно пытается сделать это, учитывая connectionPool.reconnectInterval
но, возможно, есть условие, когда вы быстро исчерпываете все соединения до такой степени, что получаете ошибку... не уверен. В любом случае, надеюсь,