接上一章节服务消费者构建Hystrix Dashboard监控端点,这里讲讲声明式服务消费 Feign实现消费者
Feign是 Netflix公司开发的一个声明式的 REST调用客户端;
Ribbon负载均衡、Hystrix服务熔断是我们 Spring Cloud中进行微服务开发非常基础的组件,在使用的过程中我们也发现它们一般都是同时出现的,而且配置也都非常相似,每次开发都有很多相同的代码,因此 Spring Cloud基于 Netflix Feign整合了 Ribbon和 Hystrix两个组件,让我们的开发工作变得更加简单,就像 Spring Boot是对 Spring+SpringMVC的简化一样,Spring Cloud Feign对 Ribbon负载均衡、Hystrix服务熔断进行简化,在其基础上进行了进一步的封装,不仅在配置上大大简化了开发工作,同时还提供了一种声明式的 Web服务客户端定义方式;
使用 Feign实现消费者,我们通过下面步骤进行:
第一步:创建普通 Spring Boot工程
第二步:添加依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-starter-netflix-hystrix 2.2.10.RELEASE org.springframework.cloud spring-cloud-starter-openfeign 3.1.3 org.springframework.cloud spring-cloud-dependencies 2021.0.3 pom import spring-milestones Spring Milestones https://repo.spring.io/libs-milestone false
第三步:添加注解
在项目入口类上添加@EnableFeignClients注解表示开启 Spring Cloud Feign的支持功能;
@EnableFeignClients//开启 Spring Cloud Feign的支持功能;
第四步:声明服务
定义一个 FeignService接口,通过@FeignClient注解来指定服务名称,进而绑定服务,然后再通过 SpringMVC中提供的注解来绑定服务提供者提供的接口,如下:
/*** 使用feign的客户端注解绑定远程服务的名称* 远程服务的名称可大小写*/
@FeignClient("springcloud-service-provider")
public interface FeignService {/*** 声明一个方法,这个方法就是远程的服务提供者提供的方法* @return*/@RequestMapping("/service/provide")public String hello();}
这相当于绑定了一个名叫 springcloud-service-provider (这里springcloud-service-provider大小写 SPRINGCLOUD-SERVICE-PROVIDER 都可以 ) 的服务提供者提供的/service/provide接口;
第五步:使用 Controller中调用服务
@RestController
public class FeignController {@AutowiredFeignService helloService;@RequestMapping("/web/hello")public String hello() {//调用声明式的接口方法,实现对远程服务的调用return helloService.hello();}
}
第六步:属性配置
server.port=8083
# 配置服务的名称
spring.application.name=springcloud-service-feign
# 配置 eureka注册中心地址
eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka/,http://eureka8762:8762/eureka/
第七步:测试
http://localhost:8082/web/hello
上一篇:欧拉角和旋转矩阵之间的转换