2016-07-29 99 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);