我是靠谱客的博主 不安含羞草,最近开发中收集的这篇文章主要介绍Spring Cloud 实战(三)将RestTemplate替换为OpenFeign,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前两篇文章分别实战了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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部