问题1:springCloud框架,我写的是resource模块,资源下载是file模块。我需要在resource模块中下载文件png和xml文件并按照指定的文件格式压缩为zip文件,压缩完为zip文件,读取这个zip文件流作为一个北向接口。所有的文件下载操作都是在file模块中,所以我的resource模块只是作为一个中间转发命令和读取文件的作用。
解决1:在resource中指定创建两个目录(image和xml),使用fegin调用file模块的下载接口传入创建的两个目录结构,将png下载在image文件夹中,xml文件下载在xml文件夹中。file模块下载完成后通过fegin返回值告诉resource模块下载完成。本地测试完成,此思路可选。
问题2:上述方法中,file和resource模块是部署在同一个服务器上是可取的,如果是部署在容器内,可以把resource的创建目录映射到宿主机上,让file和resource共享一个目录也是可行的,但是如果file和resource是部署在不同机器上那怎么处理!只能抛弃解决1的思路了。
解决2:resource模块只负责发送下载命令,下载文件后压缩文件夹都由file模块来操作。file模块将文件下载后压缩完成,最后读取压缩文件流,将文件流返回给resource模块,resource模块拿到文件流发送给北向接口即可!所以这块就需要用到fegin返回流。
步骤1:file模块暴露一个返回Reponse的接口api
/**
* 查询数据按照特定目录压缩成zip文件
* * @param sysType 系统类型
* @param dataSetId 样本来源
* @param tempFolder1 文件