微服务架构中的远程调用是指不同的微服务之间通过网络进行调用和通信。
例如A服务需要调用B服务的某个功能,那么就需要用到远程调用了。
这里使用的Feign框架是SpringCloud Alibaba中集成的openFeign,目前微服务框架还是比较流行SpringCloud Alibaba,生态完整、模块丰富。
下面使用openFeign来完成一个示例:
这是使用A服务去调用B服务的一个接口
1. 引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 这里需要引入依赖的是A服务,也就是需要发起调用的服务
2. 在B服务的某个controller中添加一个测试方法
@RequestMapping("/B_testOpenFeign")
public R testOpenFeign() {
return R.ok().put("B","被调用成功!");
}
3. 在A服务编写一个接口,告诉springcloud这个接口需要调用远程服务
@FeignClient("B服务的名称")
public interface testFeignService {
@RequestMapping("/B服务controller的RequestMapping/B_testOpenFeign")
public R testFeign();
}
4. 在A服务的启动类中,使用注解开启远程调用
@EnableFeignClients(basePackages = "第3点中接口的所在包")
5. 在A服务的随便一个controller中编写一个方法调用
@RequestMapping("/A_testOpenFeign")
public R test(){
R result = testFeignService.testFeign();
return R.ok().put("A","已调用成功!").put("B", result.get("B"));
}
6. 启动两个服务,测试是否成功
- 访问A服务的调用方法,得到如下response:
{
"msg": "success",
"A": "已调用成功!",
"B": "被调用成功!",
"code": 0
}