Spring Boot - Zuul Proxy Sunucusu ve Yönlendirme
Zuul Server, tüm istekleri işleyen ve mikro hizmet uygulamalarının dinamik yönlendirmesini yapan bir ağ geçidi uygulamasıdır. Zuul Sunucusu, Uç Sunucu olarak da bilinir.
Örneğin, /api/user kullanıcı hizmetiyle eşleştirilir ve / api / products ürün hizmetiyle eşlenir ve Zuul Server istekleri dinamik olarak ilgili arka uç uygulamasına yönlendirir.
Bu bölümde, Spring Boot'da Zuul Server uygulamasının nasıl oluşturulacağını detaylı olarak göreceğiz.
Zuul Sunucu Uygulaması Oluşturma
Zuul Sunucusu, Spring Cloud bağımlılığı ile paketlenmiştir. Spring Boot projesini Spring Initializer sayfasından indirebilirsiniz.https://start.spring.io/ ve Zuul Sunucu bağımlılığını seçin.
@EnableZuulProxy açıklamasını ana Spring Boot uygulamanıza ekleyin. @EnableZuulProxy açıklaması, Spring Boot uygulamanızın bir Zuul Proxy sunucusu olarak çalışmasını sağlamak için kullanılır.
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);
}
}
Derleme yapılandırma dosyamıza Spring Cloud Starter Zuul bağımlılığını eklemeniz gerekecektir.
Maven kullanıcıları aşağıdaki bağımlılığı ekleyecektir. pom.xml dosya -
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
Gradle kullanıcıları için, build.gradle dosyanıza aşağıdaki bağımlılığı ekleyin
compile('org.springframework.cloud:spring-cloud-starter-zuul')
Zuul yönlendirmesi için aşağıdaki özellikleri application.properties dosyanıza veya application.yml dosyanıza ekleyin.
spring.application.name = zuulserver
zuul.routes.products.path = /api/demo/**
zuul.routes.products.url = http://localhost:8080/
server.port = 8111
Bu, http’nin /api/demo/ürün servisine yönlendirilir. Örneğin,/api/demo/products iletildi /products.
yaml dosyası kullanıcıları aşağıda gösterilen application.yml dosyasını kullanabilir -
server:
port: 8111
spring:
application:
name: zuulserver
zuul:
routes:
products:
path: /api/demo/**
url: http://localhost:8080/
Note - http://localhost:8080/ uygulama Zuul Proxy aracılığıyla yönlendirilmeden önce zaten çalışıyor olmalıdır.
Tam derleme yapılandırma dosyası aşağıda verilmiştir.
Maven kullanıcıları aşağıda verilen pom.xml dosyasını kullanabilir -
<?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>
Gradle kullanıcıları aşağıda verilen build.gradle dosyasını kullanabilir -
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}"
}
}
Yürütülebilir bir JAR dosyası oluşturabilir ve aşağıda verilen Maven veya Gradle komutlarını kullanarak Spring Boot uygulamasını çalıştırabilirsiniz -
Maven için aşağıda verilen komutu kullanabilirsiniz -
mvn clean install
"BUILD SUCCESS" sonrasında, JAR dosyasını hedef dizinin altında bulabilirsiniz.
Gradle için aşağıda verilen komutu kullanabilirsiniz -
gradle clean build
"BUILD SUCCESSFUL" sonrasında, JAR dosyasını build / libs dizini altında bulabilirsiniz.
Şimdi, aşağıda gösterilen komutu kullanarak JAR dosyasını çalıştırın -
java –jar <JARFILE>
Burada gösterildiği gibi Tomcat portu 8111'de uygulamanın başladığını bulabilirsiniz.
Şimdi, URL'ye basın http://localhost:8111/api/demo/products web tarayıcınızda ve çıktılarını görebilirsiniz. /products REST Uç Noktası aşağıda gösterildiği gibi -