Architecture de microservices - MSA pratique

Dans ce chapitre, nous allons créer une application de microservice qui consommera différents services disponibles. Nous savons tous que le microservice n'est pas un moyen rentable de créer une application, car chaque service que nous construisons sera de nature complète. La création d'un microservice dans l'environnement local nécessiterait une configuration système haut de gamme, car vous devez disposer de quatre instances d'un serveur pour continuer à fonctionner de manière à pouvoir être consommé à un moment donné. Pour créer notre tout premier microservice, nous utiliserons certains des points de terminaison SOA disponibles et nous utiliserons la même chose dans notre application.

Configuration et installation du système

Avant d'aller plus loin dans la phase de construction, préparez votre système en conséquence. Vous auriez besoin de certains services Web publics. Vous pouvez facilement google pour cela. Si vous souhaitez utiliser le service Web SOAP, vous obtiendrez un fichier WSDL et à partir de là, vous devrez utiliser le service Web spécifique. Pour le service REST, vous n'aurez besoin que d'un seul lien pour consommer le même. Dans cet exemple, vous allez brouiller trois services Web différents «SOAP», «REST» et «personnalisé» dans une seule application.

Architecture d'application

Vous allez créer une application Java à l'aide du plan d'implémentation de microservice. Vous allez créer un service personnalisé et la sortie de ce service fonctionnera comme une entrée pour d'autres services.

Voici les étapes à suivre pour développer une application de microservice.

Step 1: Client creation for SOAP service- Il existe de nombreuses API Web gratuites disponibles pour apprendre un service Web. Pour les besoins de ce tutoriel, utilisez le service GeoIP de "http://www.webservicex.net/.”Le fichier WSDL est fourni dans le lien suivant sur leur site Web « webservicex.net. Pour générer le client à partir de ce fichier WSDL, il vous suffit d'exécuter la commande suivante dans votre terminal.

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

Cette commande générera tous les fichiers client requis dans un dossier nommé «SEI», qui est nommé d'après l'interface du point de terminaison du service.

Step 2: Create your custom web service- Suivez le même processus mentionné à une étape précédente de ce didacticiel et créez une API REST basée sur Maven nommée «CustomRest». Une fois terminé, vous trouverez une classe nommée «MyResource.java». Allez-y et mettez à jour cette classe en utilisant le code suivant.

package com.tutorialspoint.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";
   }
}

Une fois que tout est terminé, lancez cette application sur le serveur. Vous devriez obtenir la sortie suivante dans le navigateur.

Il s'agit du serveur Web, qui renvoie un objet chaîne une fois qu'il est appelé. Il s'agit du service d'entrée qui fournit des entrées pouvant être utilisées par une autre application pour générer des enregistrements.

Step 3: Configure another Rest API- Dans cette étape, utilisez un autre service Web disponible sur services.groupkt.com. Cela renverra un objet JSON lorsqu'il est appelé.

Step 4: Create JAVA application - Créez une application Java normale en sélectionnant «Nouveau projet» -> «Projet JAVA» et appuyez sur Terminer comme indiqué dans la capture d'écran suivante.

Step 5: Add the SOAP client- À l'étape 1, vous avez créé le fichier client pour le service Web SOAP. Allez-y et ajoutez ces fichiers client à votre projet actuel. Une fois l'ajout réussi des fichiers client, le répertoire de votre application ressemblera à ce qui suit.

Step 6: Create your main app- Créez votre classe principale où vous utiliserez tous ces trois services Web. Cliquez avec le bouton droit sur le projet source et créez une nouvelle classe nommée «MicroServiceInAction.java». La tâche suivante consiste à appeler différents services Web à partir de cela.

Step 7: Call your custom web service - Pour cela, allez-y et ajoutez l'ensemble de codes suivant pour implémenter l'appel de votre propre 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();
}

Step 8: Consume SOAP Services- Vous avez généré votre fichier client mais vous ne savez pas quelle méthode doit être appelée dans tout ce package? Pour cela, vous devez vous référer à nouveau au WSDL, que vous avez utilisé pour générer vos fichiers client. Chaque fichier WSDL doit avoir une recherche de balise «wsdl: service» pour cette balise. Cela devrait être votre point d'entrée de ce service Web. Voici le point de terminaison de service de cette application.

Vous devez maintenant implémenter ce service dans votre application. Voici l'ensemble de code Java dont vous avez besoin pour implémenter votre service Web SOAP.

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());

Step 9: Consume REST web service- Deux des services ont été consommés jusqu'à présent. Dans cette étape, un autre service Web REST avec une URL personnalisée sera utilisé à l'aide de votre service Web personnalisé. Utilisez le jeu de code suivant pour ce faire.

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();
}

Step 10: Consume all services - Étant donné que votre service Web «CustomRest» est en cours d'exécution et que vous êtes connecté à Internet, si tout est terminé avec succès, ce qui suit devrait être votre classe principale consolidée.

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();
      }
   }
}

Une fois que vous exécutez ce fichier, vous verrez la sortie suivante dans la console. Vous avez développé avec succès votre première application de microservice.