栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OpenFeign调用服务初级进阶

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenFeign调用服务初级进阶

Nacos和OpenFeign入门应用

上次只讲了Nacos,通过OpenFeign方式调用的初级入门.通过此方式调用,生产者有多个服务时,默认是有轮询负载均衡效果的,底层用到的是Ribbon,如何做到的,怎么去改变或者说以权重策略,可以自行百度研究.记忆的东西太多,先注重实际应用.

实际工作中,往往不是这么简单,想要更好的了解别人是怎么做的?如果达不到创新要求,那么最好先模仿,看看大神是如何运用的.一起看下若依微服务里是如何运用OpenFeign调用服务的.

若依微服务下载地址:

RuoYi-Cloud:  基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本

运行Nacos,启动若依微服务(查看若依文档,需要导入些SQL.启动Redis)

看下Nacos

 查看下若依微服务中是如何用OpenFeign调用服务的.

项目结构:

 System服务启动类结构:

 OpenFeign调用:

 和我们上篇讲的有雷同,好像又有些不同是吧

这个又是什么?

综上,大体的调用方式是差不多的,看样子我们也有做大神的潜力,那么就一起看下,那样与我们自己写的不同的那几点是什么意思.

@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)

这句开始.上篇我们调用的时候

@FeignClient(name="provider")//为服务提供者(生产者)名称   就是application.yml里配置的服务名

打开@OpenFeign注解

 name别名是value,value也就是name,我们被完整的耍了一遍.

而若依里用的是

value = ServiceNameConstants.SYSTEM_SERVICE

打开看下就知道了

原来是用一个类进行了封装,配置文件里还是那么一回事.

那么contextId = "remoteUserService"又是怎么回事.

其实就是做个区分,比如说同一个消费者,我们写了A接口,B接口,C接口都是要去调用同一个生产者的服务,那么消费者接口A,B,C中调用的服务是相同的,现在维护OpenFeign组件的是Spring,自然加了@FeignClient注解的接口也会被Spring所管理,其实contextId 的作用就是用以区别Spring容器创建该接口对象时的引用命名问题而已.

简单做个小实验

当我们模拟消费者里定义两个接口去访问同一个生产者时, 英语不好,但是看习惯了,大概意思是...........我不知道

然后我们加个contextId = "A",contextId = "B"做区分,启动OK了.就是这么简单

 我们再看

fallbackFactory = RemoteUserFallbackFactory.class又是个什么.

打开

 实现了FallbackFactory 加了个泛型,就是那个Feign借口,里面重写了

create(Throwable throwable){}方法,那么先猜猜呗.调用报错后的处理

调用失败?写写试试就知道了,照葫芦画瓢

实现FallbackFactory后要求重写create方法:

 报错后的处理,猜的.后面就不演示了.偷偷玩

那么大神写的若依微服务里运用OpenFeign调用服务的的代码也理差不多了.当不会创新时,至少我们会copy.才疏学浅,承蒙不弃.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780834.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号