乐优商场项目day03——Feign

之前,我们使用了 Ribbon 的负载均衡功能,简化了远程调用时的代码:

这貌似已经非常简化了,
但是以后肯定会有很多的方法,
那岂不是每个方法都要写上一段这个代码?(就改一下参数)

那么有没有什么办法来优化一下呢?有!就是我们接下来要学的:Feign 

Feign 的英文意思是伪装,功能当然也和伪装有关:
Feign 可以把 Rest 的请求进行隐藏,伪装成类似SpringMVC的Controller一样。
我们就不用再自己去 拼接url、拼接参数 等操作,一切都交给Feign去做。

 

下面我们来个Feign的快速入门使用:

改造一下服务调用方 yuanxion-service-consumer

1. 引入启动器:

 

        <dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
		</dependency>

2.修改配置。 默认配置即可,不用修改。

3.在引导类上加注解:

 

因为Feign 内部有 RestTemplate,所以不用我们自己创建,注释掉:

 

然后把controller里 原来的方法都注释的:

注释掉之后,我们来用 Feign 的方法:

1.创建一个接口:


2.在接口上加上@FeignClient注解,并指定 要作用的微服务名:


3.写上要调用的接口
 

我们这里要调用的是 服务提供方里 UserController 里的 queryUserById 方法

 

这样我们就可以使用了,回到controller里去,继续改造(注入UserClient,然后调用 即可):

然后重启 服务调用方 consumer的服务,访问http://localhost/consumer/user?id=1,看看是否也能调用服务提供方的服务:

可以调用! 
Feign我们就使用成功了!

负载均衡
因为Feign中本身已经集成了Ribbon依赖和自动配置
所以不需要我们额外引入依赖,也不需要注册RestTemplate对象。

 

Hystrix
Feign中也默认集成了Hystrix
不过,默认情况是关闭的,我们需要在 服务提供方里 的配置里 ,覆盖默认配置 来开启:

 

开启后就可以使用Hystrix了:

想熔断哪个方法,我们只需去创建一个类,然后去实现相应的接口 :

然后定义熔断时的操作:

然后我们需要把这个熔断类 告诉 Feign  :

当然,别忘了将 刚刚创建的这个类 注入容器:

这样,我们就可以使用了!

下面我们来试试:
关闭 服务提供方 provider 的服务,重启 服务调用方 consumer 的服务,然后访问 http://localhost/consumer/user?id=1 看看

Feign里的 Hystrix 熔断 我们也就使用成功了!

 

全部评论

相关推荐

12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
10-29 21:14
疯犬丨哈士奇:喜欢你的人会主动表白,对你有想法的人会很主动,所以要你的公司不会吊着你所以懂了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务