APIs de Cliente Java do Azure Service Fabric

As APIs de cliente do Service Fabric permitem implementar e gerir aplicações e contentores baseados em microsserviços num cluster do Service Fabric no Azure, no local, no computador de desenvolvimento local ou noutra cloud. Este artigo descreve como gerar e utilizar APIs de cliente Java do Service Fabric sobre as APIs REST do cliente do Service Fabric

Gerar o código de cliente com o AutoRest

AutoRest é uma ferramenta que gera bibliotecas de cliente para aceder a serviços Web RESTful. A entrada no Teste Automático é uma especificação que descreve a API REST com o formato Especificação OpenAPI. As APIs REST do cliente do Service Fabric seguem esta especificação.

Siga os passos mencionados abaixo para gerar o código de cliente Java do Service Fabric com a ferramenta AutoRest.

  1. Instalar nodejs e NPM no seu computador

    Se estiver a utilizar o Linux, então:

    sudo apt-get install npm
    sudo apt install nodejs
    

    Se estiver a utilizar o Mac OS X, então:

    brew install node
    
  2. Instale o AutoRest com o NPM.

    npm install -g autorest
    
  3. Crie um fork e clone o repositório azure-rest-api-specs no seu computador local e aceda à localização clonada a partir do terminal do computador.

  4. Aceda à localização mencionada abaixo no seu repositório clonado.

    cd specification\servicefabric\data-plane\Microsoft.ServiceFabric\stable\6.0
    

    Nota

    Se a versão do cluster não for a 6.0.* , aceda ao diretório adequado na pasta estável.

  5. Execute o seguinte comando autorest para gerar o código de cliente Java.

    autorest --input-file= servicefabric.json --java --output-folder=[output-folder-name] --namespace=[namespace-of-generated-client]
    

    Segue-se um exemplo que demonstra a utilização de autorest.

    autorest --input-file=servicefabric.json --java --output-folder=java-rest-api-code --namespace=servicefabricrest
    

    O comando seguinte utiliza servicefabric.json o ficheiro de especificação como entrada e gera código de cliente Java na java-rest-api-code pasta e coloca o código no servicefabricrest espaço de nomes. Após este passo, encontrará duas pastas modelse implementation dois ficheiros ServiceFabricClientAPIs.java e package-info.java gerados na java-rest-api-code pasta .

Incluir e utilizar o cliente gerado no projeto

  1. Adicione o código gerado adequadamente ao projeto. Recomendamos que crie uma biblioteca com o código gerado e inclua esta biblioteca no seu projeto.

  2. Se estiver a criar uma biblioteca, inclua a seguinte dependência no projeto da biblioteca. Se estiver a seguir uma abordagem diferente, inclua a dependência adequadamente.

    GroupId:  com.microsoft.rest
    Artifactid: client-runtime
    Version: 1.2.1
    

    Por exemplo, se estiver a utilizar o sistema de compilação maven, inclua o seguinte no seu pom.xml ficheiro:

        <dependency>
          <groupId>com.microsoft.rest</groupId>
          <artifactId>client-runtime</artifactId>
          <version>1.2.1</version>
        </dependency>
    
  3. Crie um RestClient com o seguinte código:

        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);
    
  4. Utilize o objeto de cliente e faça as chamadas adequadas conforme necessário. Eis alguns exemplos que demonstram a utilização do objeto de cliente. Partimos do princípio de que o pacote de aplicação foi criado e carregado para o arquivo de imagens antes de utilizar as API abaixo.

    • Aprovisionar uma aplicação

          ApplicationTypeImageStorePath imageStorePath = new ApplicationTypeImageStorePath();
          imageStorePath.withApplicationTypeBuildPath("<application-path-in-image-store>");
          client.provisionApplicationType(imageStorePath);
      
    • Criar uma aplicação

          ApplicationDescription applicationDescription = new ApplicationDescription();
          applicationDescription.withName("<application-uri>");
          applicationDescription.withTypeName("<application-type>");
          applicationDescription.withTypeVersion("<application-version>");
          client.createApplication(applicationDescription);
      

Compreender o código gerado

Para cada API, encontrará quatro sobrecargas de implementação. Se existirem parâmetros opcionais, encontrará mais quatro variações, incluindo esses parâmetros opcionais. Por exemplo, considere a API removeReplica.

  1. public void removeReplica(String nodeName, UUID partitionId, String replicaId, Boolean forceRemove, Long timeout)
    • Esta é a variante síncrona da chamada à API removeReplica
  2. public ServiceFuture<Void> removeReplicaAsync(String nodeName, UUID partitionId, String replicaId, Boolean forceRemove, Long timeout, final ServiceCallback<Void> serviceCallback)
    • Esta variante da chamada à API pode ser utilizada se quiser utilizar programação assíncrona baseada no futuro e utilizar chamadas de retorno
  3. public Observable<Void> removeReplicaAsync(String nodeName, UUID partitionId, String replicaId)
    • Esta variante da chamada à API pode ser utilizada se quiser utilizar programação assíncrona reativa
  4. public Observable<ServiceResponse<Void>> removeReplicaWithServiceResponseAsync(String nodeName, UUID partitionId, String replicaId)
    • Esta variante da chamada à API pode ser utilizada se quiser utilizar programação assíncrona reativa e lidar com a resposta rest RAW

Passos seguintes