Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring Cloud

Spring Cloud OpenFeign Nedir? OpenFeign ile Servisler Arası İletişim Kurmak

Paylaş

Spring Cloud Dersleri‘ne devam ediyorum.

İçindekiler

  • Uygulama Örneği
    • Student Service
    • Student Detail

Spring Projelerimizde servislerimiz arasında iletişimi kolay bir şekilde kurup, yönetebileceğimiz Feign Client kullanımına bakacağız.

Servislerimiz arasındaki iletişimi klasik yöntem diyebileceğimiz RestTemplate ile yaparak sağlabiliyoruz. RestTemplate ile yapılan iletişim yöntemini kullanarak metotlarımız içerisinde ilgili api isteğini kullanarak metotlarımızı bağımlı hale getiriyoruz.

OpenFeign kullanarak servis iletişimi interface templateler üzerinden yönetip, daha okunabilir ve configürasyonel olarak kullanabilmeyi sağlamaktayız.

Bu kullanabilirlik sayesinde çok fazla kullanılan servislerin yönetilebilmesi ve olası değişiklerde daha hızlı ve kolay müdahale edebilmemizi sağlamaktadır.

Uygulama Örneği


Spring Cloud OpenFeign Uygulama Örneği yapacağız. Uygulamamız aşağıdaki servislerden oluşacaktır.

  • Student
  • Student Detail

Servisler arası iletişimizde de OpenFeign kullancağız.

Student Detail Servisi, öğrenci bilgilerini Student Servisinden alıp bir endpointte gösterecektir. Student servisine ise Open Feign kullanarak sağlayacağız.

Projelerimizde Spring Cloud kullanacağız ve OpenFeign içinde bir bağımlılık gerekmetedir.

Student Service

Servisimiz bir controller’dan oluşacak ve 2 adet endpointi olacak. Bu endpoint Oracle Üniversitesi ve Eclipse Ünivsersitesinde okuyan öğrenci listelerini verecek olan bir rest endpoint.

@RestController
public class StudentController {

    @GetMapping("oracle-university")
    public List<String> getFindByOracleUniversity(){
        return Arrays.asList("Burak","Ahmet","Mehmet","Veli");
    }

    @GetMapping("eclipse-university")
    public List<String> getFindByEclipseUniversity(){
        return Arrays.asList("Ali","Hakkı","Buğra","Kaya");
    }
}
Code language: Java (java)

Student Detail

Student Detail servisimiz Student servisine Open Feign ile bağlanarak Oracle, ve Eclipse üniversitesinde olan kişileri alacak. Bağımlılığımız ise aşağıdaki gibi olacak.

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>Code language: HTML, XML (xml)

Open Feign’i kullanmak için bir interface yapacağız ve bu interface içerisinde bağlanmak istediğimiz servis url’i ve kullanmak istediğimiz metotları yazarak endpointleri belirlememiz gerekiyor.

@FeignClient(value = "student", url = "http://localhost:8081")
public interface StudentApi {
    @GetMapping("/oracle-university")
    List<String> getFindByOracleUniversity();

    @GetMapping("/eclipse-university")
    List<String> getFindByEclipseUniversity();
}Code language: PHP (php)

FeignClient ile birlikte servis adını ve url tanımlaması yapıyoruz.

Interface’de metot tanımlamarı yaparken @GetMapping ile Student servisindeki endpoint adreslerine gideceğini söylemiş oluyoruz. Bu örnekte Eureka Service kullansaydık sadece value değeri ile erişebilir url tanımlaması yapmadan endpointlere erişebilirdik. Eureka Service’e başka dersler de değineceğiz.

StudentDto Oluşturalım ve Student Servisinden gelen değerleri üniversitelere göre tutalım.

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StudentDto {
    private String schoolName;
    private String budget;
    private List<String> students;
}
Code language: Java (java)

Student Detail Controller’imizi oluşturalım.

@RestController
public class StudentDetailController {

    private final StudentApi studentApi;

    public StudentDetailController(StudentApi studentApi) {
        this.studentApi = studentApi;
    }

    @GetMapping("/get-oracle-student")
    public ResponseEntity getOracleStudent() {

        StudentDto studentDto =StudentDto.builder().schoolName("ORACLE UNIVERSITY")
                .budget("2500")
                .students(studentApi.getFindByOracleUniversity()).build();
    

        return ResponseEntity.ok().body(studentDto);
    }   
    
    @GetMapping("/get-eclipse-student")
    public ResponseEntity getEclipseStudent() {

        StudentDto studentDto =StudentDto.builder().schoolName("ECLIPSE UNIVERSITY")
                .budget("3500")
                .students(studentApi.getFindByEclipseUniversity()).build();
    

        return ResponseEntity.ok().body(studentDto);
    }
}
Code language: Java (java)

Controllerımızda iki adet endpoint bulunmakta ve StudentApi interface’mizi kullanarak istediğimiz anda Student Servisinden değeleri çekip gösterebiliyoruz.

studentApi.getFindByEclipseUniversity() metodunu kullandığımızda Student servisinin ilgili endpointine giderek bilgileri kolaylıkla alabiliyoruz.

Student Detail servisimiz çalıştırdığımızda aşağıdaki gibi bir yanıt alacağız.

{
  "schoolName": "ECLIPSE UNIVERSITY",
  "budget": "3500",
  "students": [
    "Ali",
    "Hakkı",
    "Buğra",
    "Kaya"
  ]
}Code language: JSON / JSON with Comments (json)

ve

{
  "schoolName": "ORACLE UNIVERSITY",
  "budget": "2500",
  "students": [
    "Burak",
    "Ahmet",
    "Mehmet",
    "Veli"
  ]
}Code language: JSON / JSON with Comments (json)

Sonuçlarını alıyoruz. Bu isimleri Student Servisinden çekerek Student Detail Servisimizde kullandık.

Open Feign kullanırken timeout, retry ayarlamaları da yapabilmekteyiz.

application.yml dosyamıza tanımalamalarımızı yapabiliriz.

feign:
  client:
    config:
      default:
        connectTimeout: 10000
        readTimeout: 10000
Code language: YAML (yaml)

Projenin Kaynak Kodlarına Ulaş


Tags:

spring cloud derslerispring cloud open feignSpring Cloud Uygulamaları

Paylaş

Diğer Yazılar

Docker Apache Kafka Broker Kurulumu
Previous

Docker ile Apache Kafka Kurulumu ve Kullanımı

Kitap: Sprint: Sadece 5 Günde Büyük Sorunları Çözün Yeni Fikirleri Test Edin
Next

Kitap: Sprint: Sadece 5 Günde Büyük Sorunları Çözün Yeni Fikirleri Test Edin

Next
Kitap: Sprint: Sadece 5 Günde Büyük Sorunları Çözün Yeni Fikirleri Test Edin
06 Haziran 2022

Kitap: Sprint: Sadece 5 Günde Büyük Sorunları Çözün Yeni Fikirleri Test Edin

Previews
31 Mayıs 2022

Docker ile Apache Kafka Kurulumu ve Kullanımı

Docker Apache Kafka Broker Kurulumu

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Cloud Aws SQS Uygulama Örneği

Spring Boot Cloud AWS SQS Kullanımı

Spring Cloud Config Server Nedir Uygulama Örneği Dersler

Spring Cloud Config Server Nedir? Uygulama Örneği

Axon Server Nedir Axon Framework Kurlumu

Axon Framework Nedir ve Kurulumu

Spring Cloud Dersleri Gateway Api Load Balancing Routing Uygulama Örneği

Spring Cloud Gateway & Routing & Load Balancing İşlemleri

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Tanıyalım
Veritabanı
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale