正在连接以从 Java 编写 Janusgraph 以进行远程遍历

Connecting to compose Janusgraph from Java for remote traversal

我正在尝试连接到远程 compose-janusgraph 服务器以创建图形并添加顶点。请注意,我无权访问服务器配置,也无法更改服务器设置。

我可以使用

在我的本地 gremlin 控制台上执行此操作
:remote connect tinkerpop.server conf/compose.yaml session
:remote console
graph=ConfiguredGraphFactory.create("mygraph")
graph=ConfiguredGraphFactory.open("mygraph")
g.addV("pat")
g.tx().commit()

我想对使用 GraphTraversalSource 的 Java 客户端执行相同的操作。从 Java,我能够使用 Cluser->Client->submit 选项成功提交 groovy 字符串。但是我使用 GraphTraversalSource 一直不成功,出现了各种错误。

我用来配置 gremlin 控制台的 conf/compose.yaml 如下所示,与我在 remote-graph gremlin.remote.driver.clusterFile config

中使用的相同
hosts: [portal-xxx.composedb.com] 
port: 15290 
username: admin 
password: pass 
connectionPool: { enableSsl: true } 
serializer: { className: 
    org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, 
    config: { serializeResultToString: true } }

远程图形属性看起来像

gremlin.remote.remoteConnectionClass=org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection
# cluster file has the remote server configuration
#gremlin.remote.driver.clusterFile=gremlin-console.yaml
gremlin.remote.driver.clusterFile=/Users/julian.stephen/ibm.github/privacy-secbu/Privacy-DataViz/src/main/resources/gremlin-console.yaml
# source name is the global graph traversal source defined on the server
gremlin.remote.driver.sourceName=mygraph

如果我尝试

Graph graph = EmptyGraph.instance();
GraphTraversalSource g = graph.traversal().withRemote(conf);
g.addV("Java Remote Test");
g.close();

代码运行无异常,但图中未创建顶点。我认为这是因为 tx() 未提交。所以我尝试获取一个 ConfiguredGraphFactory 而不是空图,但下面的所有选项都会导致异常。

JanusGraph graph = ConfiguredGraphFactory.open("mygraph");

而不是 EmptyGraph 会导致错误(与接下来描述的错误相同)。当我创建配置 ConfiguredGraphFactory.createConfiguration(new MapConfiguration(map));,然后尝试打开图形时,我收到类似 Please add a key named "ConfigurationManagementGraph" to the "graphs" property in your YAML file and restart the server to be able to use the functionality of the ConfigurationManagementGraph class. 的错误,如前所述,我无权访问服务器。

我也尝试了使用 JanusGraphFactory 的不同变体,但无济于事。

有人可以帮忙吗?

原来这是 Janusgraph 服务器中 channelizer 设置的错误配置,它没有为使用 GraphConfiguration Factory 创建的新图创建动态遍历绑定。一旦服务器团队纠正了这个问题并更新了部署,动态遍历就会被绑定并且代码开始工作。