【分布式实战】(四)服务之间的远程调用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
【分布式实战】(四)服务之间的远程调用OpenFeign_第1张图片

二、服务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一样,注入直接使用
【分布式实战】(四)服务之间的远程调用OpenFeign_第2张图片

你可能感兴趣的:(大学)