Gremlin 在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()

我用的是JanusGraph。远程连接到JanusGraph,然后使用连接池借用连接时,如何创建连接池

现在我正在做类似的事情

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));