簡體   English   中英

如何在gremlin-scala中設置Neo4J配置鍵?

[英]How to set Neo4J config keys in gremlin-scala?

當獨立運行Neo4J數據庫服務器時(在Ubuntu 14.04上),將在etc/neo4j/neo4j.conf或可能的$NEO4J_HOME/conf/neo4j.conf為全局安裝設置配置選項

但是,當使用Apache的Neo4jGraph類( org.apache.tinkerpop.gremlin.neo4j.structure.Neo4jGraph )從Java或Scala實例化Neo4j數據庫時,沒有全局安裝,並且構造函數沒有( 據我所知 )查找任何配置文件。

特別是,在為我的應用程序運行測試套件時,最終會Neo4jGraph許多Neo4jGraph並發實例,最終會拋出java.net.BindException: Address already in use因為所有這些實例都試圖在很小的范圍內進行通信在線備份的端口數,我實際上並不需要。 這些通道使用配置選項dbms.backup.address (默認值: 127.0.0.1:6362-6372 : dbms.backup.enabled )和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)

我應該如何設置此屬性?

通過TinkerPop的Neo4jGraph配置是通過傳遞配置密鑰來完成的。 在TinkerPop 3.x中,這意味着所有通過Configuration對象提供給Neo4jGraph.open()GraphFactory.open() ,帶有gremlin.neo4j.conf前綴的Neo4j密鑰都將直接向下傳遞到Neo4j實例。 你可以看到這樣的例子在這里的高可用性配置的TinkerPop有關文檔。

在TinkerPop有關2.x中,同樣的做法不過是截取的按鍵前綴是不是blueprints.neo4j.conf.*的討論在這里

在數據庫連接已經打開之后操作db.configuration絕對是徒勞的。

斯蒂芬·馬萊特Stephen Mallette )的答案是正確的,但是這種特殊的配置似乎並沒有像他所鏈接的例子那樣通過。 neo4j.conf預期的配置密鑰與neo4j.conf預期的配置密鑰之間存在命名不匹配的org.neo4j.backup.OnlineBackupKernelExtension dbms.backup.address代替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"禁用備份偵聽。

使用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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM