当独立运行Neo4J数据库服务器时(在Ubuntu 14.04上),etc/neo4j/neo4j.conf
或$NEO4J_HOME/conf/neo4j.conf
中的全局安装配置options为set。
但是,当使用Apache的Neo4jGraph
类(org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph
)从Java或Scala实例化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.enabled
设置为false
或扩展端口范围来解决。
没有奏效的事情:
创建包含第/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 :(得分:0)
Neo4jGraph
配置是通过配置密钥的传递完成的。在TinkerPop 3.x中,这意味着所有通过gremlin.neo4j.conf
对象Configuration
或Neo4jGraph.open()
提供的前缀为GraphFactory.open()
的Neo4j密钥将直接传递给Neo4j实例。您可以在关于高可用性配置的TinkerPop文档中看到此here的示例。
在TinkerPop 2.x中,采用了相同的方法,但关键字前缀是blueprints.neo4j.conf.*
,正如here所述。
答案 1 :(得分:0)
在数据库连接打开后操作db.configuration
肯定是徒劳的。
stephen mallette的回答是在正确的轨道上,但这个特殊的配置似乎并没有像他的链接示例那样通过。 neo4j.conf
中预期的配置键与org.neo4j.backup.OnlineBackupKernelExtension
中预期的配置键之间存在命名不匹配。该类不是dbms.backup.address
和dbms.backup.enabled
,而是查找配置密钥online_backup_server
和online_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"
禁用备份监听。
答案 2 :(得分: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);