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"
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.
(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.
<?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>
port: 8015 Konfigurasi kelas Pengawalklien:
eureka:daftar-dengan-eureka: palsu # Jangan daftarkan diri anda dengan eureka
4. Konfigurasikan configBean
service-url:
defaultZone: http://localhost:7001/eureka/
ribbon:
eureka:
enabled: true
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(); } }
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(); } }
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); } }
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> <version>1.4.6.RELEASE</version> </dependency>
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); }
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!