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
create(Throwable throwable){}方法,那么先猜猜呗.调用报错后的处理
调用失败?写写试试就知道了,照葫芦画瓢
实现FallbackFactory后要求重写create方法:
报错后的处理,猜的.后面就不演示了.偷偷玩
那么大神写的若依微服务里运用OpenFeign调用服务的的代码也理差不多了.当不会创新时,至少我们会copy.才疏学浅,承蒙不弃.



