Клиентские API-интерфейсы Java в Azure Service Fabric
Клиентские API-интерфейсы Service Fabric позволяют развертывать приложения и контейнеры, основанные на микрослужбах, и управлять ими в кластере Service Fabric в Azure (локально, на локальном компьютере разработки или в другом облаке). В этой статье описывается создание и использование клиентских API Java Service Fabric поверх клиентских REST API Service Fabric.
Создание кода клиента с использованием AutoRest
AutoRest — средство, создающее клиентские библиотеки для получения доступа к веб-службам RESTful. Входные данные для AutoRest — спецификация, описывающая REST API в формате спецификации OpenAPI. Клиентские REST API в Service Fabric следуют данной спецификации.
Выполните действия, описанные ниже, чтобы создать клиентский код Java Service Fabric с помощью средства AutoRest.
Установите Node.js и NPM на компьютере.
При использовании Linux выполните следующее:
sudo apt-get install npm sudo apt install nodejs
При использовании Mac OS X выполните следующее:
brew install node
Установите AutoRest с помощью NPM.
npm install -g autorest
Создайте вилку и клонируйте репозиторий azure-rest-api-specs на локальном компьютере, а затем перейдите в расположение клонированного репозитория из терминала на вашем компьютере.
Перейдите в указанное ниже расположение в клонированном репозитории.
cd specification\servicefabric\data-plane\Microsoft.ServiceFabric\stable\6.0
Примечание
Если версия кластера не 6.0. *, перейдите в соответствующий каталог в стабильной папке.
Выполните следующую команду 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 в папкеjava-rest-api-code
, а затем включает этот код в пространство именservicefabricrest
. После этого у вас будет две папки (models
иimplementation
) и два файла (ServiceFabricClientAPIs.java
иpackage-info.java
), созданные в папкеjava-rest-api-code
.
Добавление созданного клиента в проект и его использование
Добавьте созданный код в проект соответствующим образом. Мы советуем создать библиотеку с помощью сгенерированного кода и добавить ее в проект.
При создании библиотеки рекомендуется добавить следующие зависимости в проект библиотеки. Если вы используете другой подход, добавьте зависимость другим образом.
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 имеется четыре метода перегрузки реализации. Если имеются необязательные параметры, вы увидите еще четыре дополнительных варианта (включая эти необязательные параметры). Рассмотрим для примера API removeReplica
.
- public void removeReplica (строка nodeName, UUID partitionId, строка replicaId, логическое значение forceRemove, долгое время ожидания)
- Это синхронный вариант вызова API removeReplica.
- public ServiceFuture<Void> removeReplicaAsync(строка nodeName, UUID partitionId, строка replicaId, логическое значение forceRemove, долгое время ожидания, конечный ServiceCallback<Void> serviceCallback)
- Этот вариант вызова API можно применять, если необходимо использовать обратные вызовы и асинхронное программирование на основе событий в будущем.
- public Observable<Void> removeReplicaAsync(строка nodeName, UUID partitionId, строка replicaId)
- Этот вариант вызова API можно применять, если необходимо использовать реактивное асинхронное программирование.
- public Observable<ServiceResponse<Void>> removeReplicaWithServiceResponseAsync(строка nodeName, UUID partitionId, строка replicaId)
- Этот вариант вызова API можно применять, если необходимо использовать реактивное асинхронное программирование и работать с ответом REST без форматирования.
Дальнейшие действия
- Дополнительные сведения см. в статье REST API Service Fabric.