2016-07-29 103 views
0

独立运行Neo4J数据库服务器(在Ubuntu 14.04上)时,配置optionsset,用于etc/neo4j/neo4j.conf或可能的$NEO4J_HOME/conf/neo4j.conf的全局安装。如何在gremlin-scala中设置Neo4J配置密钥?

然而,从实例化Java或Scala中使用Apache的Neo4jGraph类(org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph)一Neo4j的数据库时,没有全局的安装,并构造不(as far as I can tell)寻找任何配置文件。

特别是,在运行测试套件为我的应用程序时,我最终的Neo4jGraph许多并发实例,从而结束了扔java.net.BindException: Address already in use,因为所有这些实例都试图在一个小范围内的端口用于在线备份通信,我其实不需要。这些通道设置为配置选项dbms.backup.address(默认值:127.0.0.1:6362-6372)和dbms.backup.enabled(默认值:true)。

我的问题可以通过设置dbms.backup.enabledfalse或扩大端口范围来解决。

事情都没有奏效:

  • 创建/etc/neo4j/neo4j.conf包含该行dbms.backup.enabled=false

  • 在我的项目的src/main/resources目录中创建相同的文件。

  • src/main/resources/neo4j中创建相同的文件。

  • 手动设置配置属性的Scala代码内:

val db = new Neo4jGraph(dataDirectory) db.configuration.addProperty("dbms.backup.enabled",false)

db.configuration.addProperty("neo4j.conf.dbms.backup.enabled",false)

db.configuration.addProperty("gremlin.neo4j.conf.dbms.backup.enabled",false)

我应该如何去设置这个属性?

回答

0

数据库连接已经被打开后操纵db.configuration肯定是徒劳的。

stephen mallette的回答是正确的轨道上,但这个特殊的配置似乎并没有在他的链接示例执行方式通过。有预计neo4j.conf配置键和那些预计在org.neo4j.backup.OnlineBackupKernelExtension之间的命名不匹配。取而代之的dbms.backup.addressdbms.backup.enabled,那类查找配置键online_backup_serveronline_backup_enabled

我是不是能够得到这些键向下传递到底层Neo4jGraphAPI实例正确。相反,我需要做的是:

import org.neo4j.tinkerpop.api.impl.Neo4jFactoryImpl 
import scala.collection.JavaConverters._ 

val factory = new Neo4jFactoryImpl() 
val config = Map(
    "online_backup_enabled" -> "true", 
    "online_backup_server" -> "0.0.0.0:6350-6359" 
).asJava 
val db = Neo4jGraph.open(factory.newGraphDatabase(dataDirectory,config)) 

通过此初始化,实例正确地侦听了端口6350上的备份;将"true"更改为"false"禁用备份侦听。

0

Neo4jGraph通过TinkerPop的配置是通过配置密钥的传递完成的。在TinkerPop 3.x中,这意味着所有通过Configuration对象提供的以gremlin.neo4j.conf为前缀的所有Neo4j密钥将被直接传递给Neo4j实例,而将Neo4jGraph.open()GraphFactory.open()直接传递给Neo4j密钥。您可以在TinkerPop高可用性配置文档中看到here的示例。

在TinkerPop 2.x中,采取了相同的方法,但是关键字前缀代替blueprints.neo4j.conf.*,如here所述。

+0

是否设置配置关键'gremlin.neo4j.conf.dbms.backup.address',比方说,'0.0。 0.0:6350-6359'产生一个侦听该端口范围的实例?对我而言,它并不是。 – MSmedberg

0

使用的Neo4j 3.0.0以下禁用端口监听我(Java代码)

import org.apache.commons.configuration.BaseConfiguration; 
import org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph; 

BaseConfiguration conf = new BaseConfiguration(); 
conf.setProperty(Neo4jGraph.CONFIG_DIRECTORY, "/path/to/db"); 
conf.setProperty(Neo4jGraph.CONFIG_CONF + "." + "dbms.backup.enabled", "false"); 
graph = Neo4jGraph.open(config);