Gremlin 在JanusGraph中创建连接池并使用连接池
我用的是JanusGraph。远程连接到JanusGraph,然后使用连接池借用连接时,如何创建连接池 现在我正在做类似的事情Gremlin 在JanusGraph中创建连接池并使用连接池,gremlin,tinkerpop,tinkerpop3,janusgraph,gremlin-server,Gremlin,Tinkerpop,Tinkerpop3,Janusgraph,Gremlin Server,我用的是JanusGraph。远程连接到JanusGraph,然后使用连接池借用连接时,如何创建连接池 现在我正在做类似的事情 private static void init() { String uri = "localhost"; int poolSize = 5; graph = JanusGraphFactory.open("inmemory"); cluster = Cluster.build()
private static void init() {
String uri = "localhost";
int poolSize = 5;
graph = JanusGraphFactory.open("inmemory");
cluster = Cluster.build()
.addContactPoint(uri)
.port(8182)
.serializer(new GryoMessageSerializerV1d0(GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance())))
.maxConnectionPoolSize(poolSize)
.minConnectionPoolSize(poolSize)
.create();
gts = graph
.traversal()
.withRemote(DriverRemoteConnection.using(cluster));
}
此init方法初始化一次。然后任何需要简单连接的人都会调用下面的方法
public GraphTraversalSource getConnection() {
return gts.clone();
}
请注意,withRemote()方法现在已被弃用。我不确定我做得对吗?我想你混淆了一些概念。如果要远程连接到
图形
实例,只需使用TinkerPop驱动程序(即群集
)。在本例中,您正在本地创建JanusGraph实例,因此只需执行graph.traversal()
并开始编写Gremlin。另一方面,如果您在Gremlin服务器中托管了JanusGraph实例,则需要使用withRemote()
选项。正如您所提到的withRemote()
,您调用它的方式已被弃用,但其中提到的新方法也可以在中找到:
要了解连接到
图形的所有不同选项,我建议您阅读TinkerPop的参考文档。我认为您混淆了一些概念。如果要远程连接到图形
实例,只需使用TinkerPop驱动程序(即群集
)。在本例中,您正在本地创建JanusGraph实例,因此只需执行graph.traversal()
并开始编写Gremlin。另一方面,如果您在Gremlin服务器中托管了JanusGraph实例,则需要使用withRemote()
选项。正如您所提到的withRemote()
,您调用它的方式已被弃用,但其中提到的新方法也可以在中找到:
要了解连接到图形
实例的所有不同选项,我建议阅读TinkerPop的参考文档。使用AnonymousTraversalSource.traversal会引发一个错误,即java.lang.UnsupportedOperationException:Graph不支持事务。有什么解决办法吗?这是意料之中的。没有远程遍历的事务。一个事务绑定到一个请求,或者换句话说,您的整个遍历实际上包含一个事务。Gremlin服务器将根据需要自动提交/回滚。此外,关键是只保留一个GraphTravelSource作为singleton对象。之前我在每次查询后关闭GraphTraversalSource。这妨碍了连接线程池的使用,连接线程池与GraphTraversalSourceusing AnonymousTraversalSource绑定。traversal抛出一个错误,java.lang.UnsupportedOperationException:Graph不支持事务。有什么解决办法吗?这是意料之中的。没有远程遍历的事务。一个事务绑定到一个请求,或者换句话说,您的整个遍历实际上包含一个事务。Gremlin服务器将根据需要自动提交/回滚。此外,关键是只保留一个GraphTravelSource作为singleton对象。之前我在每次查询后关闭GraphTraversalSource。这妨碍了与GraphTraversalSource绑定的连接线程池的使用
import static org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource.traversal;
GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster));