Spring Boot - Serveur proxy Zuul et routage

Zuul Server est une application de passerelle qui gère toutes les demandes et effectue le routage dynamique des applications de microservice. Le serveur Zuul est également connu sous le nom de serveur Edge.

Par exemple, /api/user est mappé au service utilisateur et / api / products est mappé au service produit et Zuul Server achemine dynamiquement les demandes vers l'application backend respective.

Dans ce chapitre, nous allons voir en détail comment créer une application Zuul Server dans Spring Boot.

Création de l'application serveur Zuul

Le serveur Zuul est fourni avec la dépendance Spring Cloud. Vous pouvez télécharger le projet Spring Boot à partir de la page Spring Initializerhttps://start.spring.io/ et choisissez la dépendance du serveur Zuul.

Ajoutez l'annotation @EnableZuulProxy sur votre application Spring Boot principale. L'annotation @EnableZuulProxy est utilisée pour faire en sorte que votre application Spring Boot agisse comme un serveur Zuul Proxy.

package com.tutorialspoint.zuulserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableZuulProxy
public class ZuulserverApplication {
   public static void main(String[] args) {
      SpringApplication.run(ZuulserverApplication.class, args);
   }
}

Vous devrez ajouter la dépendance Spring Cloud Starter Zuul dans notre fichier de configuration de construction.

Les utilisateurs Maven devront ajouter la dépendance suivante dans votre pom.xml fichier -

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

Pour les utilisateurs de Gradle, ajoutez la dépendance ci-dessous dans votre fichier build.gradle

compile('org.springframework.cloud:spring-cloud-starter-zuul')

Pour le routage Zuul, ajoutez les propriétés ci-dessous dans votre fichier application.properties ou application.yml.

spring.application.name = zuulserver
zuul.routes.products.path = /api/demo/**
zuul.routes.products.url = http://localhost:8080/
server.port = 8111

Cela signifie que http appelle à /api/demo/être transmis au service des produits. Par exemple,/api/demo/products est transmis à /products.

les utilisateurs du fichier yaml peuvent utiliser le fichier application.yml ci-dessous -

server:
   port: 8111
spring:
   application:  
      name: zuulserver
zuul:

routes:
   products:
      path: /api/demo/**
      url: http://localhost:8080/

Note - Le http://localhost:8080/ l'application devrait déjà être en cours d'exécution avant le routage via Zuul Proxy.

Le fichier de configuration de construction complet est donné ci-dessous.

Les utilisateurs de Maven peuvent utiliser le fichier pom.xml ci-dessous -

<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>zuulserver</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>zuulserver</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.9.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-zuul</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
         </dependency>
      </dependencies>
   </dependencyManagement>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

Les utilisateurs de Gradle peuvent utiliser le fichier build.gradle ci-dessous -

buildscript {
   ext {
      springBootVersion = '1.5.9.RELEASE'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
   mavenCentral()
}
ext {
   springCloudVersion = 'Edgware.RELEASE'
}
dependencies {
   compile('org.springframework.cloud:spring-cloud-starter-zuul')
   testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
   imports {
      mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
   }
}

Vous pouvez créer un fichier JAR exécutable et exécuter l'application Spring Boot en utilisant les commandes Maven ou Gradle données ci-dessous -

Pour Maven, vous pouvez utiliser la commande donnée ci-dessous -

mvn clean install

Après «BUILD SUCCESS», vous pouvez trouver le fichier JAR sous le répertoire cible.

Pour Gradle, vous pouvez utiliser la commande donnée ci-dessous -

gradle clean build

Après «BUILD SUCCESSFUL», vous pouvez trouver le fichier JAR dans le répertoire build / libs.

Maintenant, exécutez le fichier JAR en utilisant la commande ci-dessous -

java –jar <JARFILE>

Vous pouvez trouver que l'application a démarré sur le port Tomcat 8111 comme indiqué ici.

Maintenant, appuyez sur l'URL http://localhost:8111/api/demo/products dans votre navigateur Web et vous pouvez voir la sortie de /products REST Endpoint comme indiqué ci-dessous -