Мы внедрили AWS Neptune DB в качестве реализации графа для нашего решения, у меня возникла проблема с тайм-аутом соединения несколько раз.
Это наша локальная среда разработки (это Springboot приложение), где мы получаем доступ к базе данных Нептуна через ALB, и мы настроили обход, как показано ниже:
@Bean
public GraphTraversalSource createReadGraphTraversalSource(){
LOGGER.debug("Connecting to neptune endpoint : {}", neptuneDBEndpoint);
Cluster cluster = Cluster.build()
.addContactPoint(neptuneDBEndpoint)
.port(80)
.enableSsl(false)
.serializer(Serializers.GRAPHBINARY_V1D0)
.create();
LOGGER.trace("Read Traversal source setup successfully");
return traversal().withRemote(DriverRemoteConnection.using(cluster));
}
Затем мы создаем TraversalSources из объекта GraphTraversalSource и используем его для запроса как ниже:
public List<ObjectTO> findLeadsByProject(String projectSid) throws DatabaseException, RecordNotFoundException {
List objectVs = null;
try (GraphTraversal<Vertex, Vertex> graphTraversal = readG.V(parentVSid)) {
leadVs = graphTraversal.out(GraphEdgeLabels.pHasO.name()).hasLabel(GraphVertexLabels..name()).valueMap()
.toList();
objectVs.forEach(vertexMap->{
final ObjectTO objectTO = objectTOSupplier.get();
objectTO.setSystemAttributes((Map<EnumAttributes, String>) vertexMap);
objectVs.add(objectTO);
});
} catch (Exception e) {
throw new DatabaseException(e);
}
if (objectVs.isEmpty()) {
throw new RecordNotFoundException();
}
return objectVs;
}
Мой вызов этого API DAO довольно обычный, RestController -> Service -> API DAO.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я делаю запрос, я Можно видеть, что DAO API возвращает результаты в API службы, а API службы делает то же самое с API Rest, но там происходит какая-то ошибка, и мой вызов API заканчивается с внутренней 500-серверной ошибкой. Ошибка Rest API не является проблемой, так как это то, о чем я должен позаботиться, но меня беспокоит то, что последующие вызовы этого API заканчиваются следующей ошибкой.
java .util .concurrent.TimeoutException: истекло время ожидания соединения на хосте {address = neptune- aws -alb.amazon aws .com / X.XXX.XX.XX: 80, hostUri = ws: //X.XXX .XX.XX: 80 / gremlin} - возможно, недоступно
Я не уверен, почему происходит эта ошибка.