9 Şubat 2021 Salı

SpringCloud Netflix Eureka @EnableEurekaClient Anotasyonu - Service Registration and Discovery

Giriş
Şu satırı dahil ederiz
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
Bazı eski kodlarda şu satırı dahil ediliyor, ancak bu "...starter-eureka" yerine "...starter-netflix-eureka-client" yazmak lazım.
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
Örnek
Açıklaması şöyle
Then we need to annotate a @Configuration with either @EnableDiscoveryClient or @EnableEurekaClient – note that this annotation is optional if we have the spring-cloud-starter-netflix-eureka-client dependency on the classpath.
Şöyle yaparız. Böylece EurekaClient arayüzü veya ondan kalıtan DiscoveryClient bean kullanılabilir.
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class SpringEurekaClientApplication {
  public static void main(String[] args) {
    SpringApplication.run(SpringEurekaClientApplication.class, args);
  }
}
Örnek
Ayrıca eğer Rest Service aslında API Gateway ise şu anotasyon da gerekir
- @EnableZuulProxy

Şöyle yaparız. Bu microservice çalışınca Eureka Dashboard'da "Instances Currently Registered With Eureka" başlığı altında "superdev-crm-customer" ismi görülebilir
eureka.client.serviceUrl.defaultZone=${EUREKA_SERVER:http://localhost:8761/eureka}
spring.application.name=superdev-crm-customer
Örnek
Şöyle yaparız
spring:
  application:
    name: discovery-client
server:
  port: 8385
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
Eğer bu uygulamada "books" isimli bir rest noktası varsa onu görmek için Eureka sunucusuna şöyle yaparız
"discovery-client/books?bridgeEndpoint=true"
Örnek
Şöyle yaparız. Burada farklı profile isimlerine göre farklı şeyler yapılıyor.
spring:
  application:
    name: ABC-SERVICE # ==> This is Service-Id
---
# Items that apply to ALL profiles:   
eureka:
  instance:
    appname: ABC-SERVICE  # ==> This is a instance of ABC-SERVICE
  client:   
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://my-eureka-server-us.com:9001/eureka
server:
  port: 8000  
  
---
spring:
  profiles: abc-service-replica01
eureka:
  instance:
    appname: ABC-SERVICE  # ==> This is a instance of ABC-SERVICE
  client:   
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://my-eureka-server-us.com:9001/eureka  
server:
  port: 8001   
Örnek
Şöyle yaparız
# Set Eureka server url here, and specify Eureka instance ID generation pattern
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka
eureka.instance.instance-id=
${spring.application.name}:${spring.application.instance_id:${random.value}}

Hiç yorum yok:

Yorum Gönder