我正在通过]远程连接到janusGraph
创建的gts(graphTraversalSource)或graphTraversal对象cluster = Cluster.build() .addContactPoints(uri.split("\\|")) .port(port) .serializer(new GryoMessageSerializerV1d0(GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance()))) .maxConnectionPoolSize(poolSize) .maxContentLength(10000000) .create(); gts = AnonymousTraversalSource .traversal() .withRemote(DriverRemoteConnection.using(cluster));
由于gts是threadSafe,因此我将gts保持在静态上下文中。每个线程使用相同的对象,并且没有线程通过调用gts.close()关闭gts。每个线程都运行查询,例如:
result = gts.V().has("foo","bar").valueMap().toList()
我不关闭由gts.V()
我正在通过cluster = Cluster.build().addContactPoints(uri.split(“ \\ |”)).port(port).serializer(new ...
close()
生成的GraphTraversal
上GraphTraversalSource
的行为,根据您是否要进行远程处理而有所不同。在您的情况下,您正在使用远程遍历,因此应调用close()
释放服务器上的副作用(如果遍历产生了任何副作用)。服务器是否收集副作用以供以后检索取决于您的实现,但是对于最不可知的代码,最好始终明确地这样做。请注意,在迭代完成的非远程(嵌入式)图数据库上生成的遍历(例如hasNext()
为false
)将触发对close()
的调用并释放该图所拥有的资源。例如,调用iterate()
将自动触发close()
。