概述
前两篇文章分别实战了Eureka的客户端、服务端以及Hystrix熔断、降级
Spring Cloud 实战(一)以eureka作为服务注册中心
Spring Cloud 实战(二)使用hystrix有效处理服务雪崩
然而这两篇文章中客户端相互调用的方式采用的是RestTemplate并用注解@LoadBalanced标注为负载均衡。
本篇就采用OpenFeign来调用其他的客户端。
OpenFeign:声明式Rest客户端
Feign是一个声明式 Web 服务客户端。它使编写 Web 服务客户端更容易。要使用 Feign,请创建一个接口并对其进行注释。它具有可插入的注释支持,包括 Feign 注释和 JAX-RS 注释。Feign 还支持可插拔的编码器和解码器。Spring Cloud 添加了对 Spring MVC 注释的支持,并支持使用HttpMessageConvertersSpring Web 中默认使用的注释。Spring Cloud 集成了 Eureka、Spring Cloud CircuitBreaker 以及 Spring Cloud LoadBalancer,在使用 Feign 时提供负载均衡的 http 客户端。
使用Feign的时候没有任何调用http接口的感觉,调用方式就是调用本地自定义的Java函数,简洁、方便。
如何使用Feign?
添加dependency
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启用Feign,在Application中使用 注解@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
@EnableFeignClients
public class PassengerApplication {
public static void main(String[] args) {
SpringApplication.run(PassengerApplication.class, args);
}
@Bean
@LoadBalanced
/**
* 此时Resttemplate非必要
*/
RestTemplate restTemplate(){
return new RestTemplate();
}
}
创建客户端Service
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient("onlinecar-driver")
public interface DriverService {
@RequestMapping("/driver/do/{id}")
String getDriverInfo(@PathVariable String id);
}
在Controller中调用Service
@Autowired
DriverService driverService;
@RequestMapping("/do/{userId}")
@HystrixCommand(
fallbackMethod = "fallbackMethod",
commandProperties = {
@HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value="2000")
}
)
public String doDriver(@PathVariable String userId){
return driverService.getDriverInfo(userId);
// String url = "http://onlinecar-driver/driver/do/"+userId;
// return restTemplate.getForObject(url,String.class);
}
就这样就可以调用其他客户端的接口了,非常简单。
使用感受
没有能力对这两个进行评价,只能通过至今的一些简单实战,以此说一下使用这两种方法的感受。
如果是使用RestTemplate
的话,想要向OpenFeign
可以直接调用方法,那还需要自己的封装代码。否则的话,就每次调用的时候都要写Url,也比较麻烦。
而OpenFeign使用起来的感觉调用Java jdk,如果需要调用其他的接口,也只需在Service中再增加相应的方法就好了。
以上,就是对OpenFeign进行的一些简单实战。
附上文档
最后
以上就是不安含羞草为你收集整理的Spring Cloud 实战(三)将RestTemplate替换为OpenFeign的全部内容,希望文章能够帮你解决Spring Cloud 实战(三)将RestTemplate替换为OpenFeign所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复