feat: [storageExt] define DFsService

This commit is contained in:
tjq 2023-07-16 17:55:01 +08:00
parent d3140d0501
commit 5e9935fed4
5 changed files with 140 additions and 0 deletions

View File

@ -0,0 +1,51 @@
package tech.powerjob.server.extension.dfs;
import java.io.IOException;
import java.util.Optional;
/**
* 分布式文件服务
*
* @author tjq
* @since 2023/7/16
*/
public interface DFsService {
/**
* 存储文件
* @param storeRequest 存储请求
* @throws IOException 异常
*/
void store(StoreRequest storeRequest) throws IOException;
/**
* 下载文件
* @param downloadRequest 文件下载请求
* @throws IOException 异常
*/
void download(DownloadRequest downloadRequest) throws IOException;
/**
* 删除文件
* @param fileLocation 文件位置
* @throws IOException 异常
*/
void delete(FileLocation fileLocation) throws IOException;
/**
* 获取文件元信息
* @param fileLocation 文件位置
* @return 存在则返回文件元信息
* @throws IOException 异常
*/
Optional<FileMeta> fetchFileMeta(FileLocation fileLocation) throws IOException;
/**
* 清理 powerjob 认为过期的文件
* 部分存储系统自带生命周期管理如阿里云OSS则不需要单独实现该方法
* @param bucket bucket
* @param days 天数需要清理超过 X 天的文件
*/
default void cleanExpiredFiles(String bucket, int days) {
}
}

View File

@ -0,0 +1,20 @@
package tech.powerjob.server.extension.dfs;
import lombok.Data;
import java.io.File;
import java.io.Serializable;
/**
* download request
*
* @author tjq
* @since 2023/7/16
*/
@Data
public class DownloadRequest implements Serializable {
private transient File target;
private FileLocation fileLocation;
}

View File

@ -0,0 +1,23 @@
package tech.powerjob.server.extension.dfs;
import lombok.Data;
/**
* 文件路径
*
* @author tjq
* @since 2023/7/16
*/
@Data
public class FileLocation {
/**
* 存储桶
*/
private String bucket;
/**
* 名称
*/
private String name;
}

View File

@ -0,0 +1,26 @@
package tech.powerjob.server.extension.dfs;
import lombok.Data;
import java.util.Map;
import java.util.Objects;
/**
* FileMeta
*
* @author tjq
* @since 2023/7/16
*/
@Data
public class FileMeta {
/**
* 文件大小
*/
private final long length;
/**
* 元数据
*/
private Map<String, Objects> metaInfo;
}

View File

@ -0,0 +1,20 @@
package tech.powerjob.server.extension.dfs;
import lombok.Data;
import java.io.File;
import java.io.Serializable;
/**
* StoreRequest
*
* @author tjq
* @since 2023/7/16
*/
@Data
public class StoreRequest implements Serializable {
private transient File localFile;
private FileLocation fileLocation;
}