我有一个 Spring Boot 应用程序,它将文件存储在 MinIO 服务器上。我的应用程序接收文件组并且应该保存每个组的所有文件或在问题组中不保存任何文件。我对组中的每个文件使用 io.minio.MinioClient#putObject
。现在我的代码看起来像
fun saveFile(folderName: String, fileName: String, file: ByteArray) {
file.inputStream().use {
minioClient.putObject(folderName, fileName, it, PutObjectOptions(file.size.toLong(), -1))
}
}
fun saveFiles(folderName: String, files: Map<String, ByteArray>) {
try {
files.forEach { (fileName, file) -> saveFile(folderName, fileName, file) }
} catch (e: Exception) {
files.forEach { (fileName, _) -> minioClient.removeObject(folderName, fileName) }
throw e
}
}
我想知道如何重构我的 saveFiles
方法以使其更具事务性。
注意没有关于按组读取文件的规则 - 每个文件都可以单独读取。
最佳答案
您可以尝试使用此 S3 feature , MinIO也支持此功能。
创建 .tar 或 .zip 存档并使用元数据选项 snowball-auto-extract=true
发送到 S3( header :X-Amz-Meta-Snowball-Auto-Extract
), 存档将自动提取到 S3 中。
这不是交易,但对我来说看起来非常相似。
关于spring-boot - 是否可以在一个事务中使用 MinIO 客户端保存一组文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67505116/