27 Eylül 2021 Pazartesi

SpringCloud Netflix Zuul @EnableZuulProxy Anotasyonu

Giriş
Şu satırı dahil ederiz
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
Açıklaması şöyle
This annotation is used to make a spring boot application act as a Zuul server. 
Bu anotasyon ile Zuul kendisine gelen "http://localhost:9002/service-sample/ping" şeklindeki bir isteği Eureka'ya "service-sample" ismi ile kaydolmuş düğümlerden birisine yönlendirir ve onun "/ping" rest endpoint'ini çağırır.

Örnek
Şöyle yaparız
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class CloudZuulApplication {
  public static void main(String[] args) {
    SpringApplication.run(CloudZuulApplication.class, args);
  }
}
application.properties dosyasını şöyle yaparız
# Specify application name, and port on which this app should run
spring.application.name=cloud-zuul
server.port=9002

# Set Eureka server url here
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka
Örnek
Şöyle yaparız
@EnableZuulProxy
@EnableDiscoveryClient
@SpringBootApplication
public class SuperdevZuulApplication {
  public static void main(String[] args) {
    SpringApplication.run(SuperdevZuulApplication.class, args);
  }
  @Bean
  public SimpleFilter simpleFilter() {
  return new SimpleFilter();
  }
}
application.properties dosyasını şöyle yaparız
server.port=8081
eureka.client.serviceUrl.defaultZone=${EUREKA_SERVER:http://localhost:8761/eureka}
spring.application.name=superdev-zuul

zuul.routes.customer.url=http://localhost:8080

ribbon.eureka.enabled=false
Açıklaması şöyle. Burada aslında zuul.routes kullanmaya normalde gerek yok, çünkü amaç zaten Eureka Discovery ile Rest servisini bulmak. Ancak ben yine de örnek olsun diye aldım
zuul.routes — we are mapping ZUUL to our customer service, any request that starts with a http://localhost:8081/customer will redirect to the customer’s service
ribbon.eureka.enabled — at this point we disabled the load balancing
customer Rest microservice'i tetiklemek için şöyle yaparız
http://localhost:8081/customer/v1/api/customer
Bu da aslında şuraya redirect edilir.
http://localhost:8080/customer/v1/api/customer
Örnek
Şöyle yaparız. Burada ribbon ile client side load balancing halen kullanılıyor.
server:
  port: 8000
zuul:
  ignoredServices: ‘*’
  prefix: /api
  routes:
    route1:
      path: /route1/**
      serviceId: <service-id-given-in-bootstrap>
      strip-prefix: false
    
    route2:
      path: /route2/**
      serviceId: <service-id-given-in-bootstrap>
      strip-prefix: false
    route3:
      path: /route3/**
      serviceId: <service-id-given-in-bootstrap>
      strip-prefix: false
endpoints:
  trace:
    sensitive: false
eureka:
  client:
    service-url:
       default-zone: http://localhost:8761/eureka/


Hiç yorum yok:

Yorum Gönder