一.知识回顾
【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】
【1-系统架构演进过程】
【2-微服务系统架构需求】
【3-高性能、高并发、高可用的三高商城系统项目介绍】
【4-Linux云服务器上安装Docker】
【5-Docker安装部署MySQL和Redis服务】
【6-Git安装与配置过程、Gitee码云上创建项目、IDEA关联克隆的项目】
【7-创建商城系统的子模块并将修改后的信息使用Git提交到Gitee上】
【8-数据库表结构的创建&后台管理系统的搭建】
【9-前端项目的搭建部署、Node安装、VSCode安装】
【10-Node的安装以及全局环境变量的相关配置&解决启动报错的问题(1.Error: Cannot find module ‘fs/promises)(2.npm安装node-sass报错)】
【11-导入人人generator项目并自动生成相关的文件&商品子模块的调试&公共模块common子模块的抽离与实现&Lombok插件的安装】
【12-商品子模块整合MyBatisPlus技术&其它模块通过generator的自动生成与补充完善】
【13-项目中微服务组件的学习-SpringCloudAlibaba微服务生态体系的学习&SpringCloudAlibaba的依赖管理&项目中SpringBoot和SpringCloud版本的统一】
【14-微服务的注册中心与配置中心Nacos&Windows操作系统上安装Nacos和Linux操作系统上用Docker中安装Nacos&每个子项目模块使用Nacos进行服务注册与发现】
二.RPC远程服务调用框架之OpenFegin
OpenFegin是一个声明式的服务调用组件。本质上是封装的Ribbon实现的。
三.基于订单模块通过OpenFeign调用商品模块的案例
3.1 商品模块的逻辑操作
先在商品服务中定义一个对外提供功能的接口
/**
* TODO:openFeign的demo案例
* 商品模块中为我们接下来订单模块的远程调用提供接口
* @return
*/
@GetMapping("/queryBrand")
public R queryBrand(){
BrandEntity brandEntity=new BrandEntity();
brandEntity.setName("奔驰");
return R.ok().put("brank",brandEntity);
}
3.2 订单模块的逻辑操作
我们在订单服务中集成OpenFegin和loadbalancer依赖,完成对应的商品服务调用,如果没有引入loadbalancer会报错。
订单模块中引入相关的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
然后创建对应的feign包,feign包下创建ProductFeignService接口
import com.ljw.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @FeignClient TODO:指明我们要从注册中心中发现服务的名称为 mall-product
*/
@FeignClient(name = "mall-product")
public interface ProductFeignService {
/**
* 需要访问远程商品模块中对应的接口方法
* @return
*/
@GetMapping("/product/brand/queryBrand")
public R queryBrand();
}
然后在Order的控制器中完成商品服务的调用
//TODO:注入我们远程调用的接口
@Autowired
ProductFeignService productFeignService;
/**
* TODO:订单模块的控制器中提供对应的接口方法--》OpenFegin--》远程调用服务---》也就是我们的商品模块
* @return
*/
@GetMapping("/products")
public R queryProduct(){
// OpenFegin 远程调用服务
return R.ok().put("products",productFeignService.queryBrand());
}
还商品模块的的主启动类中开启远程调用
/**
*
* TODO:@EnableFeignClients 注解用来扫描我们的接口
* TODO:注解当中的参数是扫描的路径--->(basePackages = "com.ljw.mall.order.feign")
*/
@EnableFeignClients(basePackages = "com.ljw.mall.order.feign")
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.ljw.mall.order.dao")
public class MallOrderApplication {
public static void main(String[] args) {
SpringApplication.run(MallOrderApplication.class, args);
}
}
启动服务访问订单模块下对应商品模块提供对应的接口服务
好了,到这里【15-项目中服务的远程调用之OpenFeign&订单模块与商品模块集成使用OpenFeign的案例】就结束了,更多内容持续更新创作中。