【问题标题】:How to use Spring Boot with the Amazon Neptune database?如何将 Spring Boot 与 Amazon Neptune 数据库一起使用?
【发布时间】:2021-12-13 06:10:06
【问题描述】:
我将 Amazon Neptune 用于我的应用程序。所以我想知道是否有办法使用 Spring Boot (Java) 为我的应用程序连接和使用来自 Neptune 工作台中的查询的数据。 我已经使用带有 Visual Studio Code 的 Java 核心成功连接到 Neptune 数据库 但我找不到任何清楚描述 Spring Boot 过程的文档。 在这种情况下有人可以帮助我吗?提前致谢!

【问题讨论】:

  • 当你说 Spring Boot 时,你是在构建一个使用 Spring Boot 的微服务或容器,还是在寻找更多的东西?
  • 嗯,我正在通过使用 Spring Boot 连接到海王星数据库来构建一个整体应用程序。这里的问题是如何通过file.properties连接到neptune

标签: java spring spring-boot graph-databases amazon-neptune


【解决方案1】:

要将 Neptune 与 springboot 一起使用,您必须添加如下配置文件。

@Configuration
public class NeptuneConfigExample {


@Bean
public Cluster cluster() {
    return Cluster.build()
            .addContactPoint("your-neptune-instance-here.xxxxxxxxxxxx.us-east-1.neptune.amazonaws.com")
            .port(8182)
            .enableSsl(true)
            .keyCertChainFile("./cert/SFSRootCAG2.pem") // download it from https://www.amazontrust.com/repository/SFSRootCAG2.pem 
            .maxConnectionPoolSize(5)
            .maxInProcessPerConnection(1)
            .maxSimultaneousUsagePerConnection(1)
            .create();
    }
}

供参考 - click

【讨论】:

  • 感谢@pranav Suresh,但我收到一个错误,即不推荐使用 keyCertChainFile
  • 如果您无法使用默认证书,您只需提供自己的证书。在许多情况下,您可以将构建器的那一部分排除在外。它被许多 TinkerPop 版本的 Java Keystore 所取代。因此,为了避免弃用,只需使用新的构建器选项并删除已弃用的选项,或者完全删除该步骤并使用默认证书。
【解决方案2】:

连接到海王星

在您的 EC2 实例上安装 Apache Maven。首先,输入以下内容以添加带有 Maven 包的存储库:

sudo wget https://repos.fedorapeople.org/repos/dchen/apache- 
maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache- 
maven.repo

输入以下内容以设置软件包的版本号:

sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache- 
maven.repo

然后就可以使用yum安装Maven了:

 sudo yum install -y apache-maven

此示例仅使用 Java 8 进行了测试。输入以下内容以在您的 EC2 实例上安装 Java 8:

sudo yum install java-1.8.0-devel

输入以下内容以将 Java 8 设置为 EC2 实例上的默认运行时:

sudo /usr/sbin/alternatives --config java

出现提示时,输入 Java 8 的编号。

输入以下内容以将 Java 8 设置为 EC2 实例上的默认编译器:

sudo /usr/sbin/alternatives --config javac

出现提示时,输入 Java 8 的编号。

在一个新目录中,创建一个 pom.xml 文件,然后在文本编辑器中打开它。

将以下内容复制到 pom.xml 文件中并保存(通常可以将版本号调整为最新的稳定版本):

<project xmlns="https://maven.apache.org/POM/4.0.0" 
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 
 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
 <groupId>com.amazonaws</groupId>
 <artifactId>RDFExample</artifactId>
<packaging>jar</packaging>
 <version>1.0-SNAPSHOT</version>
<name>RDFExample</name>
<url>https://maven.apache.org</url>
<dependencies>
<dependency>
  <groupId>org.eclipse.rdf4j</groupId>
  <artifactId>rdf4j-runtime</artifactId>
  <version>3.6</version>
 </dependency>
 </dependencies>
 <build>
<plugins>
  <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.2.1</version>
      <configuration>
        <mainClass>com.amazonaws.App</mainClass>
      </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.8</source>
      <target>1.8</target>
       </configuration>
      </plugin>
    </plugins>
    </build>
 </project>    

注意 如果您正在修改现有的 Maven 项目,则在前面的代码中会突出显示所需的依赖项。

要为示例源代码 (src/main/java/com/amazonaws/) 创建子目录,请在命令行输入以下内容:

mkdir -p src/main/java/com/amazonaws/

在 src/main/java/com/amazonaws/ 目录中,创建一个名为 App.java 的文件,然后在文本编辑器中打开它。

将以下内容复制到 App.java 文件中。将 your-neptune-endpoint 替换为您的 Neptune 数据库实例的地址。

package com.amazonaws;

import org.eclipse.rdf4j.repository.Repository;
import org.eclipse.rdf4j.repository.http.HTTPRepository;
import org.eclipse.rdf4j.repository.sparql.SPARQLRepository;

import java.util.List;
import org.eclipse.rdf4j.RDF4JException;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.query.TupleQuery;
import org.eclipse.rdf4j.query.TupleQueryResult;
import org.eclipse.rdf4j.query.BindingSet;
import org.eclipse.rdf4j.query.QueryLanguage;
import org.eclipse.rdf4j.model.Value;

public class App
{
public static void main( String[] args )
{
    String sparqlEndpoint = "https://your-neptune- 
  endpoint:port/sparql";
    Repository repo = new SPARQLRepository(sparqlEndpoint);
    repo.initialize();

    try (RepositoryConnection conn = repo.getConnection()) {
       String queryString = "SELECT ?s ?p ?o WHERE { ?s ?p ?o } 
    limit 10";

       TupleQuery tupleQuery = 
 conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString);

       try (TupleQueryResult result = tupleQuery.evaluate()) {
          while (result.hasNext()) {  // iterate over the result
               BindingSet bindingSet = result.next();

               Value s = bindingSet.getValue("s");
               Value p = bindingSet.getValue("p");
               Value o = bindingSet.getValue("o");

               System.out.print(s);
               System.out.print("\t");
               System.out.print(p);
               System.out.print("\t");
               System.out.println(o);
          }
       }
    }
}
}

使用以下 Maven 命令编译并运行示例:

 mvn compile exec:java

【讨论】:

  • 这实际上是 Neptune 文档中的 SPARQL 示例。问题海报正在使用 Gremlin。
猜你喜欢
  • 2015-03-14
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2021-01-02
  • 2020-03-09
  • 2020-12-29
相关资源
最近更新 更多