使用openfeign完成微服务之间的远程调用,微服务之间的上下文打通

一.微服务提供对外api

        1.假设现在有两个微服务,jc-club-subject-dev和jc-club-auth-dev,我们想在subject中调用auth微服务,获取到用户信息,既然想要调用auth微服务,那auth微服务就需要提供对外提供的api,所以在api包里面,创建了一个UserFeignService接口,提供了一个对外的api, 在这里面把我们想要提供的对外接口,从当前微服务中的controller接口中把函数粘贴过来即可。 同时在接口上加入

        2.在对应接口加上@FeignClient("当前提供api的微服务名称")注解。

@FeignClien中的有一个@import注解起到了相关作用,在进行扫包的时候,动态代理实现了这个接口,加入到了ioc容器,具体原理可以看看其他文章

        3.@EnableFeignClients("com.wgz") 这是启动类需要加的注解,这样才可以扫描到@FeignClient标注过的接口

        4.subject想要获得UserFeufnService,还得需要导入这个包,直接包含auth微服务模块肯定是不合理的,建议在auth模块中新建立一个api子模块,

subject微服务通过在pom.xml中引入这个api模块实现引入

        此图为auth服务对外提供的api

二.远程调用

         rpc也就是远程调用的意思,在subject的中的一个rpc包里,实现一个UserRpc类

        注入我们之前在auth微服务中api模块中编写的UserFeignService,在subjec微服务中使用UserFeignService调用函数完成远程调用

三.检测是否获取到信息

四.可能会报错提示你没有spring-cloud-loadbalance,如果提示了加下面的依赖就没有问题了

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

五.微服务调用时,被调用者的上下文打通 ,

        openfeign实际上底层还是RestTemplate重写发出一个http请求,所以此时我们还是需要一个feign拦截器,在网关发请求到调用微服务时就拦截请求,将loginid写入到我们新的请求头里面 ,当前微服务发出请求,被调用微服务的才可以从请求头里面拿到loginid,再去实现被调用的微服务上下文打通

                                                                                                                如有错误请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值