Microservice-architecture-hands-on-msa

提供:Dev Guides
移動先:案内検索

マイクロサービスアーキテクチャ-ハンズオンMSA

この章では、利用可能なさまざまなサービスを使用する1つのマイクロサービスアプリケーションを構築します。 私たちは皆、マイクロサービスがアプリケーションを構築するための費用対効果の高い方法ではないことを知っています。なぜなら、私たちが構築する各サービスは本質的にフルスタックになるからです。 ローカル環境でマイクロサービスを構築するには、ある時点で使用できるようにサーバーのインスタンスを4つ実行し続ける必要があるため、ハイエンドのシステム構成が必要になります。 初めてのマイクロサービスを構築するために、利用可能なSOAエンドポイントのいくつかを使用し、アプリケーションで同じものを使用します。

システム構成とセットアップ

ビルドフェーズに進む前に、それに応じてシステムを準備します。 いくつかのパブリックWebサービスが必要になります。 これは簡単にグーグルで検索できます。 SOAP Webサービスを使用する場合、1つのWSDLファイルを取得し、そこから特定のWebサービスを使用する必要があります。 RESTサービスの場合、同じものを消費するために必要なリンクは1つだけです。 この例では、1つのアプリケーションで3つの異なるWebサービス「SOAP」、「REST」、および「カスタム」をジャムします。

アプリケーションアーキテクチャ

マイクロサービス実装計画を使用して、Javaアプリケーションを作成します。 カスタムサービスを作成し、このサービスの出力が他のサービスの入力として機能します。

以下は、マイクロサービスアプリケーションを開発するための手順です。

ステップ1:SOAPサービスのクライアント作成-Webサービスを学習するために利用できる無料のWeb APIが数多くあります。 このチュートリアルでは、「http://www.webservicex.net/[[[1]]] WSDLファイルは、Webサイトの次のリンクで提供されています。 webservicex.net。このWSDLファイルからクライアントを生成するには、ターミナルで次のコマンドを実行するだけです。

wsimport http://www.webservicex.net/geoipservice.asmx?WSDL

このコマンドは、「SEI」という名前の1つのフォルダーの下にすべての必要なクライアントファイルを生成します。このフォルダーは、サービスエンドポイントインターフェイスにちなんで命名されます。

ステップ2:カスタムWebサービスを作成します-このチュートリアルの前の段階で述べたのと同じプロセスに従い、「CustomRest」という名前のMavenベースのREST APIを構築します。 完了すると、「MyResource.java」という名前のクラスが見つかります。 先に進み、次のコードを使用してこのクラスを更新します。

package com.finddevguides.customrest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("myresource")
public class MyResource {
   @GET
   @Produces(MediaType.TEXT_PLAIN)

   public String getIt() {
      return "IND|INDIA|27.7.65.215";
   }
}

すべてが完了したら、サーバーでこのアプリケーションを実行します。 ブラウザに次の出力が表示されます。

Webサービス

これは、呼び出されると1つの文字列オブジェクトを返すWebサーバーです。 これは、他のアプリケーションがレコードを生成するために使用できる入力を提供する入力サービスです。

ステップ3:別のREST APIを設定します-このステップでは、http://services.groupkt.com/country/get/iso3code/IND [services.groupkt.com。]で利用可能な別のWebサービスを使用します。これによりJSONが返されます呼び出されたときのオブジェクト。

ステップ4:JAVAアプリケーションの作成-次のスクリーンショットに示すように、「新規プロジェクト」→「JAVAプロジェクト」を選択して「終了」をクリックして、通常のJavaアプリケーションを1つ作成します。

JAVAアプリケーション

ステップ5:SOAPクライアントの追加-ステップ1では、SOAP Webサービスのクライアントファイルを作成しました。 先に進み、これらのクライアントファイルを現在のプロジェクトに追加します。 クライアントファイルが正常に追加されると、アプリケーションディレクトリは次のようになります。

SOAP Webサービス

ステップ6:メインアプリの作成-これら3つのWebサービスをすべて使用するメインクラスを作成します。 ソースプロジェクトを右クリックし、「MicroServiceInAction.java」という名前の新しいクラスを作成します。 次のタスクは、これからさまざまなWebサービスを呼び出すことです。

ステップ7:カスタムWebサービスを呼び出す-このため、次のコードセットを追加して、独自のサービスの呼び出しを実装します。

try {
   url = new URL("http://localhost:8080/CustomRest/webapi/myresource");
   conn = (HttpURLConnection) url.openConnection();
   conn.setRequestMethod("GET");
   conn.setRequestProperty("Accept", "application/json");

   if (conn.getResponseCode() != 200) {
      throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
   }

   BufferedReader br = new BufferedReader(new InputStreamReader(
      (conn.getInputStream())));
   while ((output = br.readLine()) != null) {
      inputToOtherService = output;
   }
   conn.disconnect();

} catch (MalformedURLException e) {
   e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}

ステップ8:SOAPサービスの使用-クライアントファイルを生成しましたが、そのパッケージ全体でどのメソッドを呼び出す必要があるかわかりませんか? このためには、クライアントファイルの生成に使用したWSDLを再度参照する必要があります。 すべてのWSDLファイルには、このタグの「wsdl:service」タグ検索が1つ必要です。 それは、そのWebサービスのエントリポイントである必要があります。 以下は、このアプリケーションのサービスエンドポイントです。

WSDLサービス

次に、アプリケーションにこのサービスを実装する必要があります。 以下は、SOAP Webサービスを実装するために必要なJavaコードのセットです。

GeoIPService newGeoIPService = new GeoIPService();
GeoIPServiceSoap newGeoIPServiceSoap = newGeoIPService.getGeoIPServiceSoap();
GeoIP newGeoIP = newGeoIPServiceSoap.getGeoIP(Ipaddress);
//Ipaddress is output of our own web service.

System.out.println("Country Name from SOAP Webserivce ---"+newGeoIP.getCountryName());

ステップ9:REST Webサービスの使用-これまで2つのサービスが消費されていました。 このステップでは、カスタマイズされたURLを持つ別のREST Webサービスが、カスタムWebサービスの助けを借りて消費されます。 これを行うには、次のコードセットを使用します。

String url1="http://services.groupkt.com/country/get/iso3code/";//customizing the Url
url1 = url1.concat(countryCode);

try {
   URL url = new URL(url1);
   HttpURLConnection conn = (HttpURLConnection) url.openConnection();
   conn.setRequestMethod("GET");
   conn.setRequestProperty("Accept", "application/json");

   if (conn.getResponseCode() != 200) {
      throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
   }

   BufferedReader br = new BufferedReader(new InputStreamReader(
      (conn.getInputStream())));
   while ((output = br.readLine()) != null) {
      System.out.println(output);
   }
   conn.disconnect();

} catch (MalformedURLException e) {
   e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}

ステップ10:すべてのサービスを使用します-「CustomRest」Webサービスが実行され、インターネットに接続していることを考慮して、すべてが正常に完了した場合、統合メインクラスは次のようになります。

package microserviceinaction;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.StringTokenizer;

import net.webservicex.GeoIP;
import net.webservicex.GeoIPService;
import net.webservicex.GeoIPServiceSoap;

public class MicroServiceInAction {
   static URL url;
   static HttpURLConnection conn;
   static String output;
   static String inputToOtherService;
   static String countryCode;
   static String ipAddress;
   static String CountryName;
   public static void main(String[] args) {
     //consuming of your own web service
      try {
         url = new URL("http://localhost:8080/CustomRest/webapi/myresource");
         conn = (HttpURLConnection) url.openConnection();
         conn.setRequestMethod("GET");
         conn.setRequestProperty("Accept", "application/json");

         if (conn.getResponseCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
         }

         BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));
         while ((output = br.readLine()) != null) {
            inputToOtherService = output;
         }
         conn.disconnect();

      } catch (MalformedURLException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }

     //Fetching IP address from the String and other information
      StringTokenizer st = new StringTokenizer(inputToOtherService);
      countryCode = st.nextToken("|");
      CountryName = st.nextToken("|");
      ipAddress = st.nextToken("|");

     //Call to SOAP web service with output of your web service---
     //getting the location of our given IP address
      String Ipaddress = ipAddress;
      GeoIPService newGeoIPService = new GeoIPService();
      GeoIPServiceSoap newGeoIPServiceSoap = newGeoIPService.getGeoIPServiceSoap();
      GeoIP newGeoIP = newGeoIPServiceSoap.getGeoIP(Ipaddress);
      System.out.println("Country Name from SOAP Webservice ---"+newGeoIP.getCountryName());

     //Call to REST API --to get all the details of our country
      String url1 = "http://services.groupkt.com/country/get/iso3code/";//customizing the Url
      url1 = url1.concat(countryCode);

      try {
         URL url = new URL(url1);
         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
         conn.setRequestMethod("GET");
         conn.setRequestProperty("Accept", "application/json");

         if (conn.getResponseCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
         }

         BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));
         while ((output = br.readLine()) != null) {
            System.out.println(output);
         }

         conn.disconnect();
      } catch (MalformedURLException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

このファイルを実行すると、コンソールに次の出力が表示されます。 最初のマイクロサービスアプリケーションの開発に成功しました。

コンソールの出力