Rumah  >  Artikel  >  Java  >  SpringCloud Feign menerangkan secara terperinci

SpringCloud Feign menerangkan secara terperinci

WBOY
WBOYke hadapan
2022-11-01 17:22:561674semak imbas

Feign ialah klien panggilan REST deklaratif yang dibangunkan oleh Netflix; pengimbangan beban Ribbon dan pemutus litar perkhidmatan Hystrⅸ adalah komponen yang sangat asas untuk pembangunan perkhidmatan mikro dalam Spring Cloud kami .

Kajian yang disyorkan: "tutorial video java"

1. Apakah itu Feign

Feign ialah Web perisytiharan Klien perkhidmatan, yang menjadikan panggilan antara perkhidmatan mikro lebih mudah, serupa dengan perkhidmatan panggilan pengawal. SpringCloud menyepadukan Ribbon dan Eureka dan boleh menggunakan Feigin untuk menyediakan klien http seimbang beban. Berpura-pura melaksanakan pengimbangan beban melalui antara muka dan anotasi.

2. Apa yang boleh dilakukan oleh Feign

(Dipetik daripada Crazy God Talks JAVA)

Apa yang boleh dilakukan oleh Feign?

Feign bertujuan untuk memudahkan anda menulis klien Java Http

Apabila menggunakan Ribbon RestTemplate sebelum ini, RestTemplate telah digunakan untuk merangkum permintaan Http dan membentuk satu set kaedah panggilan templat. Walau bagaimanapun, dalam pembangunan sebenar, memandangkan kebergantungan perkhidmatan boleh dipanggil di lebih daripada satu tempat, dan antara muka sering dipanggil di beberapa tempat, kelas pelanggan biasanya dirangkumkan untuk setiap perkhidmatan mikro untuk membungkus panggilan perkhidmatan bergantung ini. Oleh itu, Feign telah membuat enkapsulasi lanjut atas dasar ini, dan dia akan membantu kami mentakrifkan dan melaksanakan definisi antara muka perkhidmatan bergantung Di bawah pelaksanaan Feign, kami hanya perlu mencipta antara muka dan mengkonfigurasinya menggunakan anotasi (serupa dengan anotasi The Mapper sebelumnya. ditandakan pada antara muka Dao, dan kini anotasi Feign ditandakan pada antara muka perkhidmatan mikro) untuk melengkapkan antara muka yang mengikat kepada pembekal perkhidmatan, memudahkan usaha pembangunan merangkum pelanggan panggilan perkhidmatan secara automatik apabila menggunakan Spring Cloud Ribbon.

Feign mengintegrasikan Ribbon secara lalai

Menggunakan Ribbon untuk mengekalkan maklumat senarai perkhidmatan MicroServiceCloud-Dept, dan mencapai pengimbangan beban pelanggan melalui tinjauan pendapat, tidak seperti Ribbon, Berpura-pura sahaja Ia adalah perlu untuk menentukan perkhidmatan mengikat antara muka dan melaksanakan panggilan perkhidmatan secara elegan dan ringkas dengan cara deklaratif.

3. Langkah untuk menggunakan Feign

1 Cipta modul baharu

2 >

3. Konfigurasikan aplikasi.yaml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud-demo2</artifactId>
        <groupId>com.you</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>springcloud-eureka-7001</artifactId>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <!--Eureka Server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>
</project>

pelayan:
port: 801


eureka:

klien:

daftar-dengan-eureka: palsu # Jangan daftarkan diri anda dengan eureka
service-url:
defaultZone: http://localhost:7001/eureka/
ribbon:
eureka:
enabled: true

4. Konfigurasikan configBean

5 Konfigurasi kelas Pengawal
package com.you.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ConfigBean {
    @Bean
    @LoadBalanced  //ribbon
    /*配置负载均衡实现RestTemplate*/
    /*IRule*/
    /*RoundRobinRule 轮询 */
    /*RandomRule 随机*/
    /*AvailabilityFilteringRule 优先过滤掉跳闸、访问故障的服务,对剩下的进行轮询 */
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

6 🎜>
package com.you.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ConfigBean {
    @Bean
    @LoadBalanced  //ribbon
    /*配置负载均衡实现RestTemplate*/
    /*IRule*/
    /*RoundRobinRule 轮询 */
    /*RandomRule 随机*/
    /*AvailabilityFilteringRule 优先过滤掉跳闸、访问故障的服务,对剩下的进行轮询 */
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}
1) Perkenalkan kebergantungan Feign

package com.you;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {
        "com.you"})
public class FeignDeptConsumer_80 {
    public static void main(String[] args) {
        SpringApplication.run(FeignDeptConsumer_80.class,args);
    }
}

2) Konfigurasikan Perkhidmatan

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

3) Nota

package com.you.service;
import com.you.pojo.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Component
@FeignClient(value = "SPRINGCLOUD-PROVIDER-DEPT")
public interface DeptClientService {
    @GetMapping("/dept/aDept/{id}")
    public Dept getDeptOfId(@PathVariable("id") Long id);
}
Nama perkhidmatan mesti ditulis dengan betul Kandungan dalam GetMapper mesti konsisten dengan pembekal, jika tidak, ralat akan dilaporkan (saya menghabiskan waktu petang mencari it)

Berikut ialah Kandungan pembekal

4. Keputusan

Dengan cara ini, data boleh diperolehi, dan algoritma lalai pengimbangan beban masih mengundi!

Pembelajaran yang disyorkan: "

tutorial video java

"

Atas ialah kandungan terperinci SpringCloud Feign menerangkan secara terperinci. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam