【分布式实战】(四)服务之间的远程调用OpenFeign
步骤: 1、两个服务均在配置文件开启openfeign,并设置项目名,application-name 2、两个服务都在启动类上加上@EnableFeiginClients注解(默认是全部接口都可以被远程调用,除非你设置某一个包地址) 3、使用的时候,使用其他服务的接口 service-ucenter 为服务名,/api/ucenter/member/inner/get-member-dto/{memberId} 为接口地址。 这个服务的controller直接调用UcenterMemberService 的getMemberDtoByMemberId方法即可调用service-ucenter服务的/api/ucenter/member/inner/get-member-dto/{memberId}接口
@FeignClient(value = "service-ucenter", fallback = UcenterMemberServiceFallBack.class) public interface UcenterMemberService { @GetMapping(value = "/api/ucenter/member/inner/get-member-dto/{memberId}") MemberDto getMemberDtoByMemberId(@PathVariable(value = "memberId") String memberId); }
使用声明式的远程服务org.springframework.cloud.openfeign进行服务之间的远程调用
一、服务A:
创建一个普通的api
二、服务B:
1、创建一个feign包,专门用来存放远程调用接口
创建一个接口,内容如下,其中RequestMapping中的内容必须是远程调用的端口号后面的全部内容。
package com.tangxz.gulimall.member.feign; import com.tangxz.common.utils.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; /** * @Info: 声明式的远程服务 调用gulimall-coupond的接口 * @Author: 唐小尊 * @Date: 2020/7/11 8:53 */ @FeignClient("gulimall-coupon") public interface CouponFeignService { @RequestMapping("/coupon/coupon/member/list") public R membercoupons(); }
2、在启动类添加注解
注解参数值为远程调用接口存放的包路径
@EnableFeignClients(basePackages = "com.tangxz.gulimall.member.feign")
三、服务B使用
直接像service或mapper一样,注入直接使用
下一篇:
使用saga管理微服务事务