Einführung in Spring Cloud OpenFeign

Einführung in Spring Cloud OpenFeign

Spring Cloud OpenFeign ist ein deklarativer REST-Client für Spring Boot Anwendungen. Er ermöglicht eine vereinfachte Nutzung der OpenFeign Bibliothek durch unterstützende Annotations. Ein großer Vorteil besteht darin, dass man außer der Schnittstellendefinition keinen Code für den Aufruf des Dienstes schreiben muss.

Warum Spring Cloud OpenFeign?

Die nahtlose Integration von Microservices ist entscheidend für den Erfolg Ihrer Anwendung. Spring Cloud OpenFeign bietet eine elegante Lösung, indem es die Implementierung von HTTP-Clients vereinfacht. Damit können Ressourcenaufrufe zwischen Microservices auf eine intuitive und deklarative Weise durchgeführt werden.

Installation und Konfiguration

Die Integration von Spring Cloud OpenFeign in dein Projekt ist unkompliziert. Hier sind die Schritte:

Schritt 1: Abhängigkeiten hinzufügen

In einem Spring Boot Webprojekt basierend auf Maven muss man spring-cloud-starter-openfeign hinzufügen:

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

Zusätzlich benötigen wir die spring-cloud-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>Code-Sprache: HTML, XML (xml)

Schritt 2: Anwendung konfigurieren

Um Feign zu aktivieren, benötigt es die Annotation @EnableFeignClients in der Hauptklasse.

@SpringBootApplication
@EnableFeignClients
public class BeispielAnwendung {

    public static void main(String[] args) {
        SpringApplication.run(BeispielAnwendung.class, args);
    }
}Code-Sprache: PHP (php)

Schritt 3: Feign-Client erstellen

Erstellen Sie nun einen Feign-Klienten, der die Schnittstelle für die Kommunikation mit einem anderen Microservice definiert. Spring Cloud OpenFeign ermöglicht die deklarative Nutzung von Ressourcenaufrufen, was den Code sauberer und lesbarer macht. Hier ist ein Beispiel:

@FeignClient(value = "apiclient", url = "https://my.blog.com/")
public interface MyBlogApiClient {

  @RequestMapping(method = RequestMethod.GET, value = "/posts")
  List<Post> getPosts();

  @RequestMapping(method = RequestMethod.GET, value = "/posts/{postId}", produces = "application/json")
  Post getPostById(@PathVariable("postId") Long postId);
}Code-Sprache: CSS (css)

Schritt 4: Feign-Client verwenden

Über die Dependency-Injection von Spring können Sie nun auf einfache Weise den deklarierten Feign-Client verwenden:

@Service
@RequiredArgsConstructor
public class ApiService {
   private final MyBlogApiClient apiClient;

   public List<Post> getPosts() {
        return this.apiClient.getPosts();
   }

   public Post getPostById(Long postId) {
        return this.apiClient.getPostById(postId);
   }
   Code-Sprache: PHP (php)

Konfiguration des Feign Client: Fehlertoleranz und Ausfallsicherheit

In der Welt der Microservices ist Fehlertoleranz von entscheidender Bedeutung. Spring Cloud OpenFeign bietet Mechanismen zur Verbesserung der Ausfallsicherheit, wie zum Beispiel das Hinzufügen von Zeitverzögerungen und das Wiederholen von Anfragen.

Hinzufügen von Zeitverzögerungen

feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000Code-Sprache: JavaScript (javascript)

Wiederholen von Anfragen

feign:
  client:
    config:
      default:
        maxAttempts: 3
        retryable: trueCode-Sprache: JavaScript (javascript)

Anstatt eine Einstellung für alle Clients zu setzen, kann man auch für jeden Client indiviudelle Einstellungen treffen. In unserem Fall z.B. für unseren „apiclient“ möchten wir ein höheres connectTimeout setzen:

feign:
  client:
    config:
      default:
        connectTimeout: 1000
      apiclient:
        connectTimeout: 5000
Code-Sprache: JavaScript (javascript)

Fazit

Die Integration von Spring Cloud OpenFeign in deine Microservices-Architektur bringt erhebliche Vorteile. Die deklarative Natur erleichtert die Entwicklung und Wartung, während Mechanismen zur Fehlertoleranz die Zuverlässigkeit Ihrer Anwendung verbessern.