Azure Service Fabric Java クライアント API
Service Fabric クライアント API を使うと、Azure、オンプレミス、ローカル開発用コンピューター、または他のクラウドの Service Fabric クラスターに、マイクロサービス ベースのアプリケーションとコンテナーをデプロイして管理できます。 この記事では、Service Fabric クライアント REST API を基にして Service Fabric Java クライアント API を生成して使う方法について説明します
AutoRest を使用してクライアント コードを生成する
AutoRest は、RESTful Web サービスにアクセスするためのクライアント ライブラリを生成するツールです。 AutoRest への入力は、OpenAPI 仕様形式を使って REST API を記述している仕様です。 Service Fabric クライアント REST API はこの仕様に従っています。
AutoRest ツールを使って Service Fabric Java クライアント コードを生成するには、以下の手順のようにします。
マシンに nodejs と NPM をインストールします。
Linux を使っている場合:
sudo apt-get install npm sudo apt install nodejs
Mac OS X を使っている場合:
brew install node
NPM を使って AutoRest をインストールします。
npm install -g autorest
ローカル コンピューターで azure-rest-api-specs リポジトリをフォークして複製し、お使いのコンピューターの端末から複製した場所に移動します。
クローンしたリポジトリで下記の場所に移動します。
cd specification\servicefabric\data-plane\Microsoft.ServiceFabric\stable\6.0
Note
クラスターのバージョンが 6.0.* ではない場合は、stable フォルダーの適切なディレクトリに移動します。
次の autorest コマンドを実行して、Java クライアント コードを生成します。
autorest --input-file= servicefabric.json --java --output-folder=[output-folder-name] --namespace=[namespace-of-generated-client]
autorest の使い方がわかる例を次に示します。
autorest --input-file=servicefabric.json --java --output-folder=java-rest-api-code --namespace=servicefabricrest
次のコマンドは、
servicefabric.json
仕様ファイルを入力として受け取り、java-rest-api-code
フォルダーに Java クライアント コードを生成して、コードをservicefabricrest
名前空間に配置します。 この手順の後、2 つのフォルダーmodels
とimplementation
、およびjava-rest-api-code
フォルダーに生成された 2 つのファイルServiceFabricClientAPIs.java
とpackage-info.java
を検索します。
生成されたクライアントをプロジェクトに組み込んで使用する
生成されたコードをプロジェクトに適切に追加します。 生成されたコードを使ってライブラリを作成し、このライブラリをプロジェクトに含めることをお勧めします。
ライブラリを作成する場合は、次の依存関係をライブラリのプロジェクトに含めます。 別のアプローチを使っている場合は、適切な依存関係を含めます。
GroupId: com.microsoft.rest Artifactid: client-runtime Version: 1.2.1
たとえば、Maven ビルド システムを使っている場合は、以下のものを
pom.xml
ファイルに含めます。<dependency> <groupId>com.microsoft.rest</groupId> <artifactId>client-runtime</artifactId> <version>1.2.1</version> </dependency>
次のコードを使って RestClient を作成します。
RestClient simpleClient = new RestClient.Builder() .withBaseUrl("http://<cluster-ip or name:port>") .withResponseBuilderFactory(new ServiceResponseBuilder.Factory()) .withSerializerAdapter(new JacksonAdapter()) .build(); ServiceFabricClientAPIs client = new ServiceFabricClientAPIsImpl(simpleClient);
クライアント オブジェクトを使い、必要に応じて適切な呼び出しを行います。 クライアント オブジェクトの使い方がわかる例をいくつか示します。 以下の API を使う前に、アプリケーション パッケージをビルドし、イメージ ストアにアップロードしてあるものとします。
アプリケーションのプロビジョニング
ApplicationTypeImageStorePath imageStorePath = new ApplicationTypeImageStorePath(); imageStorePath.withApplicationTypeBuildPath("<application-path-in-image-store>"); client.provisionApplicationType(imageStorePath);
アプリケーションの作成
ApplicationDescription applicationDescription = new ApplicationDescription(); applicationDescription.withName("<application-uri>"); applicationDescription.withTypeName("<application-type>"); applicationDescription.withTypeVersion("<application-version>"); client.createApplication(applicationDescription);
生成されるコードの説明
すべての API に対し、実装の 4 つのオーバーロードがあります。 省略可能なパラメーターがある場合は、さらに、これらの省略可能なパラメーターを含む 4 つのバリエーションがあります。 たとえば、API removeReplica
を例にすると次のようになります。
- public void removeReplica(String nodeName, UUID partitionId, String replicaId, Boolean forceRemove, Long timeout)
- これは、removeReplica API 呼び出しの同期バリエーションです
- public ServiceFutureVoid> removeReplicaAsync(String nodeName, UUID partitionId, String replicaId, Boolean forceRemove, Long timeout, final ServiceCallback<Void> serviceCallback)
- API 呼び出しのこのバリエーションは、将来ベースの非同期プログラミングとコールバックを使いたい場合に、使うことができます
- public ObservableVoid> removeReplicaAsync(String nodeName, UUID partitionId, String replicaId)
- API 呼び出しのこのバリエーションは、リアクティブな非同期プログラミングを使いたい場合に、使うことができます
- public ObservableServiceResponse<Void>> removeReplicaWithServiceResponseAsync(String nodeName, UUID partitionId, String replicaId)
- API 呼び出しのこのバリエーションは、リアクティブな非同期プログラミングを使い、未処理の REST 応答を扱いたい場合に、使うことができます
次のステップ
- Service Fabric REST API についての詳細