0

在独立运行 Neo4J 数据库服务器(在 Ubuntu 14.04 上)时,为全局安装设置配置选项,或者可能是.etc/neo4j/neo4j.conf$NEO4J_HOME/conf/neo4j.conf

Neo4jGraph但是,当使用 Apache 的类( )从 Java 或 Scala 实例化 Neo4j 数据库时org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph,没有全局安装,并且构造函数(据我所知)不会查找任何配置文件。

特别是,在为我的应用程序运行测试套件时,我最终得到了许多同时出现Neo4jGraphjava.net.BindException: Address already in use.实际需要。这些通道使用配置选项dbms.backup.address(默认值:)127.0.0.1:6362-6372dbms.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)

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

4

3 回答 3

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);
于 2016-10-13T19:00:00.167 回答
0

db.configuration在数据库连接已经打开之后进行操作肯定是徒劳的。

stephen mallette的回答是正确的,但是这种特殊的配置似乎并没有像他的链接示例那样通过。neo4j.conf中预期的配置键与 中预期的配置键之间存在命名不匹配org.neo4j.backup.OnlineBackupKernelExtension。而不是dbms.backup.addressand dbms.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"禁用备份侦听。

于 2016-08-02T03:58:59.123 回答
0

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

在 TinkerPop 2.x 中,采用了相同的方法,但是键前缀与此处blueprints.neo4j.conf.*讨论的相同。

于 2016-08-01T10:05:07.347 回答