アプリケーションを作成します
データ クライアント ライブラリを使用すると、 HERE platform データアプリケーションを作成できます。 以下の手順は、 Scala ビルドツール (SBT) と Maven を使用する基本的なアプリケーションのプロセスを示しています。
資格情報にアクセスします
次の 2 種類の資格情報が必要です。
- プラットフォーム資格情報 -- プラットフォーム資格情報を取得するに は、 https://platform.here.com/profile/apps-and-keys ページから新しいアプリケーションを作成します。 アプリケーションを作成したら 、 [ キーの作成 ] ボタンをクリックして、これらの資格情報をダウンロードします。 資格情報をに置き
$HOME/.here/credentials.properties
ます。 - Repository 資格情報 -- 資格情報を取得してデータ クライアント ライブラリが含まれているリポジトリにアクセスするに は、 https://platform.here.com/profile/repository にアクセスし、 Create 資格情報をクリックして
settings.xml
ファイルをダウンロードします。
以下の手順では、 SBT および Maven プロジェクトを設定する方法について説明します。
SBT の場合、次 ~/.ivy2/.credentials
の内容の新しいファイルをで作成します。
realm=Artifactory Realm
host=repo.platform.here.com
user=[REPOSITORY_USERNAME]
password=[REPOSITORY_PASSWORD]
[REPOSITORY_USERNAME]
ここで、および [REPOSITORY_PASSWORD]
は、ダウンロードされたからのユーザー名とパスワード settings.xml
です。 この情報は servers/server[1]
、 XML ノードで確認できます。
Maven の場合は、ダウンロード settings.xml
したをにコピー ~/.m2
します。
プロジェクトを作成する
build.sbt
SBT または pom.xml
Maven のいずれかのファイルを使用して、新しい空のプロジェクトディレクトリを作成します。
scalaVersion := "2.12.12"
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")
resolvers += "HERE Repo" at "https://repo.platform.here.com/artifactory/open-location-platform/"
libraryDependencies ++= Seq(
"com.here.platform.data.client" %% "data-engine" % "1.18.163"
)
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>olp-data-sample</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.here.platform.data.client</groupId>
<artifactId>data-engine_2.12</artifactId>
<version>1.18.163</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
これでプロジェクトの設定が完了し、データ クライアント ライブラリ API の使用を開始できます。
次のコード例は、 HERE platform でアクセス権を持つカタログの HERE リソース名 (HRNS) を出力する単純なクラスを示しています。
クラスを含むファイルを、 src/main/scala
または src/main/java
プロジェクトの適切なディレクトリに追加します。
import akka.actor.CoordinatedShutdown.UnknownReason
import akka.actor.{ActorSystem, CoordinatedShutdown}
import com.here.platform.data.client.scaladsl.DataClient
import scala.util.{Failure, Success}
object OverviewScalaMain {
def main(args: Array[String]): Unit = {
implicit val actorSystem = ActorSystem()
implicit val dispatcher = actorSystem.dispatcher
val dataClient = DataClient()
val adminApi = dataClient.adminApi()
adminApi
.listCatalogs()
.andThen {
case Success(catalogHRNs) => catalogHRNs.foreach(println)
case Failure(e) => e.printStackTrace()
}
.andThen {
case _ => CoordinatedShutdown(actorSystem).run(UnknownReason)
}
}
}
import akka.actor.ActorSystem;
import akka.actor.CoordinatedShutdown;
import com.here.platform.data.client.javadsl.AdminApi;
import com.here.platform.data.client.javadsl.DataClient;
public class OverviewJavaMain {
public static void main(String[] args) {
ActorSystem actorSystem = ActorSystem.create();
DataClient dataClient = DataClient.get(actorSystem);
AdminApi adminApi = dataClient.adminApi();
adminApi
.listCatalogs()
.whenComplete(
(catalogHRNs, e) -> {
if (catalogHRNs != null) {
catalogHRNs.forEach(System.out::println);
} else if (e != null) {
e.printStackTrace();
}
})
.thenAccept(
unbound ->
CoordinatedShutdown.get(actorSystem).run(CoordinatedShutdown.unknownReason()));
}
}
Akka 依存関係
データ クライアント ライブラリは、 Akka アクターおよび Akka ストリームの上で実行され、 ActorSystem を使用してリソース ( スレッド、接続プールなど ) を管理します。 つまり、クライアントは ActorSystem をインスタンス化し、それに応じてシャットダウンする必要があります。
ActorSystem は、 1 ~ N のスレッドを割り当て、論理アプリケーションごとに 1 つ作成する重量のある構造です。
アプリケーションがすべてのタスクを完了したことが確認 CoordinatedShutdown
できたら、上記の例に示すようにを呼び出して ActorSystem をシャットダウンします。 データ クライアント ライブラリは、 CoordinatedShutdown
ActorSystem Terminate メソッドを直接呼び出した場合に実行されないクリーンアップタスクを追加で添付します。そのため、前者を使用してください。
メモ 以降のセクションで は、 myActorSystem および myMaterializer の参照 は、管理するアプリケーション全体の ActorSystem および ActorMaterializer を参照しています。
データクライアントライブラリのストリーミング動作の影響
データ クライアント ライブラリはデータをストリームとして解釈します。つまり、クライアントによって有効化されたバックプレッシャメカニズムは、 TCP レイヤーから開発者向け API まで、すべてのレイヤーを通して公開されます。
注 : クライアントはデータ クライアント ライブラリの応答を消費する必要があります。 そうでない場合、データ クライアント ライブラリは、着信データがバックプレッシャーを受けたままであると見なし、 TCP バックプレッシャーメカニズムを介して着信データを停止します。
Scala と Java の比較
データ クライアント ライブラリは、 Java バインディングと Scala バインディングの両方をサポートしています。多くのクラスには、javadsl
とscaladsl
の両方の実装があります。 クラスパッケージに特定のドメイン固有言語 (DSL) が含まれていない場合、このクラスパッケージには Scala と Java の両方で利用できる getter と setter が含まれています。
データ クライアント ライブラリは Akka の上で動作するため、多く の公開 API では、Source
、Sink
、Flow
などの Akka クラスが公開されています。 Akka ストリームに詳しくない場合 は、Iterator
、List
、Seq
、などの Scala または Java ネイティブクラスを公開するデータ クライアント ライブラリで、オーバーロードされたメソッドを使用できます。
エラー処理
データ クライアント ライブラリ操作では、主に DataClientRetriableException
次の 2 種類の例外をスローできます。 - データ クライアント ライブラリを介して返された取得可能な例外の基本クラス。 DataClientNonRetriableException
- データ クライアント ライブラリを介して返された、取得できない例外の基本クラス。
アーティファクト
libraryDependencies += "com.here.platform.data.client" % "{data-client-module}" % "1.18.163"
<dependency>
<groupId>com.here.platform.data.client</groupId>
<artifactId>{data-client-module}</artifactId>
<version>1.18.163</version>
</dependency>
dependencies {
compile group: 'com.here.platform.data.client', name: '{data-client-module}', version: '1.18.163'
}