You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GraphFactory方式连接AWS Neptune?

使用GraphFactory连接AWS Neptune的解决方案

我之前也碰到过这个问题,AWS Neptune的官方文档里确实大多展示的是用Cluster.Builder来构建连接的方式,不过其实完全可以通过GraphFactory来实现远程连接,下面是具体的做法:

核心思路

因为Neptune是远程图数据库,GraphFactory需要通过配置指定使用远程连接驱动,并传递集群的连接参数,底层其实和Cluster.Builder的实现逻辑是一致的,只是把配置集中到了Configuration对象(或properties文件)中。

代码实现示例

你可以直接在PropertiesConfiguration中设置所有连接参数,也可以通过外部properties文件来管理配置:

方式1:直接在代码中配置所有参数

import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;

public class NeptuneGraphFactoryExample {
    public static void main(String[] args) throws Exception {
        // 创建配置对象
        PropertiesConfiguration conf = new PropertiesConfiguration();

        // 指定远程连接类(必须设置)
        conf.setProperty("gremlin.remote.remoteConnectionClass", 
                         "org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection");

        // 配置Neptune集群连接参数,对应你之前Cluster.Builder的设置
        conf.setProperty("gremlin.remote.driver.clusterConfiguration.contactPoints", "your-neptune-endpoint");
        conf.setProperty("gremlin.remote.driver.clusterConfiguration.port", 8182);
        conf.setProperty("gremlin.remote.driver.clusterConfiguration.enableSsl", true);
        conf.setProperty("gremlin.remote.driver.clusterConfiguration.keyCertChainFile", "SFSRootCAG2.pem");

        // 可选:添加其他集群配置,比如连接超时、重试策略等
        // conf.setProperty("gremlin.remote.driver.clusterConfiguration.maxWaitForConnection", 30000);

        // 打开远程图
        Graph graph = GraphFactory.open(conf);
        // 获取遍历源
        GraphTraversalSource g = graph.traversal();

        // 测试连接,比如查询顶点数量
        System.out.println("Vertex count: " + g.V().count().next());

        // 关闭资源
        graph.close();
    }
}

方式2:通过外部properties文件配置

如果你想把配置和代码分离,可以创建一个neptune-cluster.properties文件:

# neptune-cluster.properties
contactPoints=your-neptune-endpoint
port=8182
enableSsl=true
keyCertChainFile=SFSRootCAG2.pem

然后在代码中引用这个文件:

PropertiesConfiguration conf = new PropertiesConfiguration();
conf.setProperty("gremlin.remote.remoteConnectionClass", 
                 "org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection");
// 指定集群配置文件路径
conf.setProperty("gremlin.remote.driver.clusterFile", "neptune-cluster.properties");

Graph graph = GraphFactory.open(conf);
GraphTraversalSource g = graph.traversal();

注意事项

  • 确保你的项目依赖中包含了gremlin-driver和TinkerPop的核心依赖,版本要和AWS Neptune支持的TinkerPop版本兼容(可以参考Neptune文档的版本对应表)。
  • 证书文件SFSRootCAG2.pem需要放在项目可访问的路径下,或者使用绝对路径。
  • 这种方式创建的Graph对象是远程连接的代理,所有遍历操作都会发送到Neptune集群执行,和Cluster.Builder创建的GraphTraversalSource行为一致。

内容的提问来源于stack exchange,提问作者James Baker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:55:17