微服务中的(OpenFiegn)远程调用

今天分享一下微服务中的远程调用~

远程调用是指不同服务中的业务需要调用不同服务的接口时需要做的.

例如:商城项目的购物车服务和支付服务,在购物车服务中添加商品到购物车之后就要去调支付服务的接口.可以通过发送http请求,但是比较麻烦,所以一般都会采用OpenFiegn来进行一个远程调用.

而我工作时第一次用到远程调用的时候是......

当时刚来公司,我要写一个crud,然后我创了很多类mapper,service,包括实体类什么的,结果花了好久写完之后别人告诉我这些类都有了,直接用就行了,让我把我创建的类都删了,呃....

然后我就用@Autowired去注入已有的service,然后发现爆红,一时不知该如何是好,最后请求别人的帮助给我注入了个***Api,在Api里注入了我需要的service,然后一顿操作就可以调用了,然后我自己看,这tm你胡乱给我写了一堆,在我看来一点结构都没有我怎么写,于是我去问人家,人家给我说架构就是这么设计的....

最后我回去搜了一下资料,发现这就是我之前了解的远程调用,原来没有经历过实践真的不知道自己都学了什么东西,丢人了......

直到后面自己又学习了一下终于明白是怎么用的了!

每个微服务都有一个api包,这个包下有专门给别的服务调用的接口

接口也没什么特殊的,但是要想实现远程调用,肯定要加一个注解:

@FeignClient(name = FeignName.ZJ_EQUIPMENT , fallback =EquipmentApiFallback.class, path = "/equipment")

name属性的意思是服务名称,那fallback指定这个类是啥呢?我点进去看了一下

他是一个实现了那个Api接口的实现类,起初我也不知道为什么要设置一个这个类,然后我去搜了一下fallback这个属性:

答案如下:

就是当我远程调用出现错误时,就会调用这个类里的方法,也就是备胎,当心爱的妹子没法正确给你

你想要的东西时,你就无奈的从这个备胎中拿到然后返回,可以看到返回的都是空值.(扎心了,老铁)

接下来进入我们的主角Api类

注解我们已经说过了,接下来就是方法,这就好似一个controller,直接调用路径,对应请求,就可以直接调用我们这个服务里的接口了,当然我也可以为了不创建那些冗余的类,在这个服务里新建我需要但是没有的接口,然后实现它在这里面写业务逻辑就行了比如:

这样就实现了接口中的两个方法,到时候别的服务远程调用Api中的接口时就会走这个逻辑了,如果出现调用失败情况的话自然就走我们的备胎喽.

那么最后还有就是怎么调用:只需在需要用到这个服务的时候,把该服务的Api接口注入到里面去

而为什么可以注入进去呢,当然时我们maven早已提前在自己服务的pom文件里引入了所有服务的Api包了,哈哈真强大.

其实我认为有一个问题,既然可以引入包,为啥不把所有的服务的service,mapper包也引过来呢,可能因为太多吧   @_@

回归正题:

最后就可以直接用api.方法名调这个服务的接口了,非常的好用.!

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值