分布式组件SpringCloud-OpenFeign测试远程调用

上节课呢,我们测试将会员服务以及优惠券服务注册到了我们这个na cos注册中心中,那么接下来呢,我们就来测试他们两个之间的远程调用是否可以成功。比如我们以一个例子,我们会员呢,想要从优惠券服务中获取到当前会员领取到的所有优惠券。那他要做的是呢,我们会员服务先去注册中心中找一下我们这个优惠券服务都在哪些机器,比如优惠券服务在多个机器都有。那么呢,注册中心给他返回优惠券服务,可能在这三台机器,我们会员服务呢,就必须挑一台机器给他发送请求过去。这样呢,找优惠券服务要来我们的响应数据,那我们会员服务呢,就可以使用了,所以我们必须从注册中心中获取到对方服务所在的这些机器位置。那我们就来测试一下我们这个流程是否可以走通,首先来说我们这个远程调用使用的技术呢,还是spring cloud里边的份?这个份呢,它可以做声明式的远程调用,那如果大家用过,那就很方便,那如果没用过呢,按照我们的这个步骤,我们先来使用在后边呢,我们再来说它的原理。这份呢,它是一个声明式的http客户端,也就是它给远程服务发的,其实就是HTTP请求。而且呢,它的使用也非常简单,比如我们的会员服务,想要调用优惠券服务,那我们呢,只需要给会员服务里边引入我们这个open phone。一它呢,就具有了远程调用别的服务的能力,我们呢来可以看一下我们的这个微服务,我们的会员服务里边有没有引入我们的open phone哎,我们之前在创建微服务的时候,我们就让大家。引了web和open phone,接下来呢,他想要调用我们的优惠券服务,比如呢,我们在优惠券服务里边写一个功能,就是获取某一个会员的。啊,所有优惠券在ctrl里边哎,比如我们就在这写一个示例方法好,我们还是public返回rm。全系统的所有返回都返回这个r,那我们呢?就叫member。car pence,哎,我们所有我们当前会员的所有优惠券来,我们写了一个return r点。okay,我们将所有的优惠券呢,我们就放在这个car pence里边。好,我们整一个list arise as the list,我们先写一个假的,给里边放一个假的优惠券就行了,哎carp。实体类好假设呢,我们这个优惠券就是从数据库里边找到的。来,我们来创建一个优惠券。这个优惠券呢?我们给里边放上几个简单的东西,比如set我们这个优惠券的名字。比如满100。100-10.好,现在呢?我们这有一个优惠券,我们就将呢,这个优惠券放到我们的这个集合里边。这一块呢,还没有这个方法对我们先OK返回一个成功的结果,给它里边put上我们的k value。我们呢,比如来发送一个请求,这个请求呢,是request mapping。来发一个呢,我们这个carp member list好,我们这个优惠券啊,我们这个优惠券会员的所有优惠券信息来,我们就让他返回我们这个数据。那现在呢?我们远程服务写好了,我们就是这个,他能帮我们来返回当前会员的所有优惠券,那我们会员服务想要调用。第一步来,我们来在这来记录一下想要远程调用的步骤。诶,想要远程。想要咱们这个远程调用别的服务。那首先呢,我们做的第一步就是要引入open phone。引入咱们这个open phone。这样呢,我们就具有远程调用别人的能力了,接下来第二个我们编写一个,因为欧朋份是一个声明式的远程调用,所以我们编写一个。接口,然后呢?这个接口就来告诉。编写一个接口,告诉spring cloud哎,这个接口呢,需要调用远程服务这个接口。需要调用远程服务,那怎么编写呢?哎,我们将以后将所有的远程接口我们都放在这个份包下,那这样呢,我们一看就是远程接口。比如呢,我们现在呢,有一个接口,我来写上一个,咱们这个接口。就叫carpen份service好,我们这个接口这个接口呢,我们现在想要远程调用我们别的。服务如何远程调用非常简单。首先呢,在这个接口上来写第一个注解叫。哎,告诉spring cloud这个接口呢,是一个远程客户端,哎,他呢要调用远程服务,调用远程哪个服务member呢?想要调用卡才写的那个功能。所以呢,我们来看注册中心中,我们注册这个服务的时候用的这个服务名,我们在这一写哎,相当于我们呢,要调用这个远程服务,那这个远程服务呢,由于它。有很多的功能,那我们到底要调用哪个功能?所以我们可以来到这个car里边。car里边。好假设呢,刚才写的这个功能,我们想要远程调用,那怎么办呢?我们只需要将这个方法的完整签名,我们来复制过来。给我们这个接口这一放。放在这。然后呢?当然这一块的路径得写全,因为我远程接口的整个地址是我们的carpen carpen member list,所以我们把这两个也复制过来。放在这好,我们写上杠那这句话的意思就是如果我们以后调用接口的这个方法,他就会去注册中心中。先找远程服务古丽妙卡所在的位置,然后呢,再去调用这个请求对应的方法。好,那这就是远程调用的流程,这是第一步,第二步编写一个接口。编写好接口以后呢,主要在接口里边声明。接口的每一个方法,每一个方法都是调用。哪个远程服务的?哪个请求诶?这样呢,我们只需要把远程服务的这些请求方法直接往这一复制就行了,这是我们做的第二步。那第三步非常简单,我们必须呢开启咱们这个远程调用功能,远程调用功能。那怎么开呢?我们是要使用份来调用,那需要一个注解叫enable哎,我们开启分cleanse,开启我们这个份客户端的远程调用功能。那我们这个远程调用功能呢,在这里边主要有一个叫base packages,比如说我们的这种基础包。我们的所有的远程调用的这些接口,我们都放在了这个粪包下,所以我们把这个包全。类名哎,咱们这个全包名给这一复制这样呢,我们只要这个服务一启动就会自动扫描这个包下。所有标了fin cloud注解的这些接口,每一个接口呢,又说明了它是调用这个服务的这个请求。那所以呢,我们如果想在会员服务里边,比如我们在会员的ctrl,我们来找一个会员的ctrl来写一个测试请求吧。好,我们就在这,我想要获取到我们在这呢,我们来写一个r。test.好来写一个request,mapping我们现在呢,都返回的是json数据好,我们呢,比如就叫car pence。获取我们当前会员的所有优惠券,那首先呢,当前会员信息我们可以先new一个number,哎,我们假设啊,现在本应该都是从。数据库里面查的那假设了一个会员诶,那就是这个会员。会员点,比如我们给他set一个会员的名字吧。好nickname会员的这个昵称,比如叫张三哎,他的所有优惠券,他要远程获取,而远程接口呢?我们刚才写了一个,就是。就叫这个carp fen service carp fen service,把这个远程接口呢alt enter把它注入进来。好,我们来按它o to where注入进来,然后呢?我们想要调用它里边的方法接口点儿,我们这个方法名儿哎,我们这儿有一个方法。它呢,直接帮我们返回r这个数据。所以呢,我们可以将整个这个r先返回,我先来return我们的这个r点OK?点我们put上两个,第一个我当前会员是什么?我们当前会员呢,是我们的这个member以及它的优惠券是什么?我们继续往前铺它,它的我们获取到的所有的优惠券。所有的优惠券。诶,我们从这个远程结果里边远程结果里边来获取一下。因为我们远程返回的这个东西,我们看我们远程接口。我们将所有的优惠券呢都放在了r里边的这个集合里边,我们来看哎,我们给r里边是放了一个叫car pence。而这个r的这个put方法,它其其实呢就是给map里边放个k value,整个r呢其实就是一个map。所以呢,我们从这个r里边获取到我们刚才放的car pence。好远程服务呢,相当于会放一个这个。然后呢?那相当于我们最终的优惠券内容,那就是在这诶。这样呢,我们会看到我们最终响应的结果,里边第一个结果,这是我们本地查询到的,比如一个张三,第二个结果呢,这是调用远程服务。查询到的,那我们就可以来测试一下这个是否成功好,我们现在呢重新启动,我们这两个服务会员服务以及咱们优惠券服务。我们会员服务呢,如果发送member member car pence请求他呢,会调用一个接口。的member coups方法,而这个方法呢?它是一个份client。它的意思就是这是一个,这是。一个声明式的远程调用,远程调用。所以呢,只要我们调用这个接口的这个方法,他就会找远程的古力妙卡粉服务给他的,这个请求来发咱们这个请求。然后呢,我们将响应到的结果重新解析出来,要我要到我们自己的数据,比如我们想要远程的这个car pence内容。那么,最终整体返回好,我们来测试一下测试呢?我们给member发请求好member 8000端口。你发什么请求呢?我们发member member car pence。这个请求呢,会远程的先来。获取到我们的car pence,我们回车,我们看一下效果,哎,我们发现呢,success已经成功了,我们的这个car pence,这是从远程获取到的,哎,满100减多少,我们当前的会员。是张三也都没问题,那么我们这个远程调用,我们就测试通过了,因为远程调用的整个过程,它的第一步就是先要去我们的注册中心里边。得知道我们这个服务所在的位置,那假设如果我们这个服务没上线。那我们看一下这个远程调用能否成功,我们呢,将我们这个carpen这个停掉,我们现在来看carpen服务呢,现在是上线的假设呢,由于各种原因。car服务掉线了,掉线了呢,我们同我们在注册中心中,我们刷新一下,我们稍等看一下。如果我们这个卡本服务器呢,一掉线以后。我们再来远程获取。来我们看一下这个注册中心中稍微慢一点。好,我们来刷新诶,在这一块健康实例数已经没有了,那我们想要这次远程调用来看一下结果。哎,我们在这儿呢,就会出现一个异常,叫connect timeout,我们连接超时,我们去来执行远程的这个卡顿,请求member list已经超时了,因为我们这个服务掉线了。我们服务呢,只要重新上线,重新上线,首先呢,在注册中心中会有,只要在注册中心中有了。那我们这个远程调用才能成功哎,我们稍等,刚才刷新的时候呢,那个掉线的服务已经被剔除了,等他上线,现在又会上来,我们稍等一下。诶,我们多刷几次。诶,现在这个服务又上来了,我们重新在这再再一次调用测试走。哎,这个测试呢,我们得稍等一下,他现在呢说还没有可用的服务上线,哎,这个上来呢,还得有段缓冲时间,稍等一下。好,我们现在呢刷新唉,我们发现呢,这个服务又成功了,我们远程获取到的优惠券在这满100减多少?当前的会员是张三唉,我们这个远程调用就成功了。远程调用呢,我们主要是使用份来进行调用份的使用步骤呢,我们刚才给大家也总结了,首先导入我们份的这个依赖包。然后呢,再来编写我们这个远程调用接口,你想要调哪个方法很简单,把远程接口的那个方法完整的签名给我们接口,这一复制粘贴就行了,把这个路径写对就行了。包括他有参数,也是给这把参数整个都复制粘贴过来,然后呢,我们接下来只要开启我们远程调用的功能,哎,我们这个spring cloud份。就会呢,扫描这些远程接口,只要呢你调接口的这个方法就会自动的给远程这个服务来发送请求,但前提是。所有的服务都必须上线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值