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

Type and hit Enter to search

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

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

Paylaş

Spring Cloud Dersleri‘ne devam ediyorum.

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 Dersleri

Spring Cloud Eureka Discovery Server Nedir? Uygulama Örneği

Spring Cloud Dersleri

Spring Cloud Dersleri

Spring Cloud Dersleri

Spring Cloud Nedir?

blank

Spring Cloud Dersleri : Spring Boot Projesini Google Cloud SQL Mysql Bağlantısı Kurmak

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

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

Link

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

Kategori

Struts
Röportaj
Android
Vue.js
Node.js
Redis
Spring Cloud Stream
Spring Data
Debezium
Mikroservis Mimarisi
XCode
Spring Native
Video
PostgreSQL
Spring Security
JPA
iPhone Uygulama Geliştirme
Objective C
Design Patterns
DevOps
Git
Apache Kafka
Maven
Yaptığım Projeler
Servlet
Spring Cloud
Linux
Spring
PrimeFaces
Spring Jdbc Template
JDBC
RabbitMQ
Manset
Google
Spring MVC
OCA Java SE 8
Quarkus
Spring Core
Microsoft
Veritabanı
Tanıyalım
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