Spring Boot - Zuul Proxy Server e Routing
Zuul Server è un'applicazione gateway che gestisce tutte le richieste e fa il routing dinamico delle applicazioni di microservizi. Zuul Server è anche noto come Edge Server.
Per esempio, /api/user è mappato al servizio utente e / api / products è mappato al servizio del prodotto e Zuul Server instrada dinamicamente le richieste alla rispettiva applicazione di backend.
In questo capitolo vedremo in dettaglio come creare l'applicazione Zuul Server in Spring Boot.
Creazione dell'applicazione Zuul Server
Il server Zuul è fornito in bundle con la dipendenza Spring Cloud. È possibile scaricare il progetto Spring Boot dalla pagina Spring Initializerhttps://start.spring.io/ e scegli la dipendenza Zuul Server.
Aggiungi l'annotazione @EnableZuulProxy sull'applicazione Spring Boot principale. L'annotazione @EnableZuulProxy viene utilizzata per fare in modo che l'applicazione Spring Boot funga da server 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);
}
}
Dovrai aggiungere la dipendenza Spring Cloud Starter Zuul nel nostro file di configurazione della build.
Gli utenti Maven dovranno aggiungere la seguente dipendenza nel file pom.xml file -
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
Per gli utenti Gradle, aggiungi la seguente dipendenza nel tuo file build.gradle
compile('org.springframework.cloud:spring-cloud-starter-zuul')
Per il routing Zuul, aggiungi le proprietà seguenti nel tuo file application.properties o application.yml.
spring.application.name = zuulserver
zuul.routes.products.path = /api/demo/**
zuul.routes.products.url = http://localhost:8080/
server.port = 8111
Ciò significa che http chiama a /api/demo/essere inoltrati al servizio prodotti. Per esempio,/api/demo/products viene inoltrato a /products.
Gli utenti del file yaml possono utilizzare il file application.yml mostrato di seguito -
server:
port: 8111
spring:
application:
name: zuulserver
zuul:
routes:
products:
path: /api/demo/**
url: http://localhost:8080/
Note - Il http://localhost:8080/ l'applicazione dovrebbe essere già in esecuzione prima del routing tramite Zuul Proxy.
Di seguito viene fornito il file completo di configurazione della build.
Gli utenti di Maven possono utilizzare il file pom.xml indicato di seguito -
<?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>
Gli utenti Gradle possono utilizzare il file build.gradle fornito di seguito -
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}"
}
}
È possibile creare un file JAR eseguibile ed eseguire l'applicazione Spring Boot utilizzando i comandi Maven o Gradle indicati di seguito:
Per Maven, puoi utilizzare il comando indicato di seguito:
mvn clean install
Dopo "BUILD SUCCESS", è possibile trovare il file JAR nella directory di destinazione.
Per Gradle, puoi utilizzare il comando indicato di seguito:
gradle clean build
Dopo "BUILD SUCCESSFUL", è possibile trovare il file JAR nella directory build / libs.
Ora, esegui il file JAR utilizzando il comando mostrato di seguito:
java –jar <JARFILE>
È possibile scoprire che l'applicazione è stata avviata sulla porta Tomcat 8111 come mostrato qui.
Ora, premi l'URL http://localhost:8111/api/demo/products nel tuo browser web e puoi vedere l'output di /products Endpoint REST come mostrato di seguito -