【RuoYi-Vue-Plus】学习笔记 37 - OSS模块(七)V4.2.0+ 版本OSS加载流程

前言

上一篇 OSS 模块相关的文章有说到版本升级之后 OSS 模块进行了重构,因为这一部分的代码写法我个人觉得是很值得学习的,因此有了今天这篇文章。

在准备本文的时候,相关方法有用到 Redis 发布订阅的功能,因此先对发布订阅功能进行了简单的分析,再回到这篇文章来。

参考目录

简单的新旧对比

旧版目录结构

在这里插入图片描述

新版目录结构(V4.2.0+)

在这里插入图片描述
显而易见的是,新版的代码量减少了。我们再来看看序列图,序列图省略了一些细节的方法调用,只保留了主要方法。

旧版序列图(简化版)

在这里插入图片描述

新版序列图(简化版)(V4.2.0+)

请添加图片描述
下面通过 debug 方式来看下 V4.2.0+ 版本的加载流程。

调用流程分析

1、SystemApplicationRunner#run

在这里插入图片描述
基础数据的缓存都是在这个方法里面完成的。

2、SysOssConfigServiceImpl#init

在这里插入图片描述
这是初始化配置的主要方法:

  1. 查询所有的 OSS 配置
  2. 遍历并缓存所有配置,如果是默认配置,会缓存到 Redis 中

在这里插入图片描述
此处设置的默认配置是 minio
在这里插入图片描述

2.1、配置缓存 SysOssConfigServiceImpl#setConfigCache

在这里插入图片描述
每一个配置都使用 Spring Cache 缓存,并发布订阅消息。缓存结果如下:
在这里插入图片描述

3、OssFactory#init

在这里插入图片描述
这个方法打印了日志,并且订阅了默认配置的通道。

如果是单机部署,这里就已经执行结束了。

订阅的功能去请教了狮子大佬,这里是给 集群 用的,一个机器修改了配置,会通知其他机器。光说不练假把式,这里来实验一下,修改一下服务端口,启动两次,模拟一下集群。

3.1、模拟集群配置 8080 | 8181

目前的端口是 8080
在这里插入图片描述
修改 idea 配置(我测试的版本是 2022.2):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完成后:
在这里插入图片描述
复制一个启动配置,设置启动端口号为 8181,并启动:
在这里插入图片描述
在这里插入图片描述
8181 服务启动完成后,发布订阅消息,8080 服务就会接收到。

3.2、8080 收到 8181 发布的订阅消息

在这里插入图片描述
8080 服务启动后,如果没有进行任何 OSS 操作直接启动 8181,则 if 判断为 false,没有初始化 OssClient,换句话说,getClient(configKey) 获取到的对象为空,所以不会刷新配置。

初始化是在上传时进行的,这个会放在下一篇文件上传流程时再详细展开,这里只演示 refresh 方法的逻辑。

操作步骤:

  1. 启动 8080 服务。
  2. /系统管理/文件管理 上传一张图片(目的:完成 OssClient 初始化)。
  3. 启动 8181 服务。
  4. 观察 8080 服务接收订阅消息的逻辑。

在这里插入图片描述
刷新配置:
在这里插入图片描述
这里也是 new OssClient 再重新放到缓存里面。控制台打印:
在这里插入图片描述
如果不想启动两个服务也想看到效果的话,可以在配置管理里面新增默认配置或者修改默认配置的信息(注意是默认配置),也能进入 refresh 方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MichelleChung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值