Oss 多线程上传文件报错

自己安装ceph,然后封装amazon s3 接口写了一个对象存储服务。但是遇到一个问题,amazon s3 封装的文件上传对象 OssClient 不是线程安全的,导致当多个文件同时上传时,多线程再上传另一个文件,导致之前正在上传的资源丢失。

目前想到的解决办法是:设置线程工厂的资源丢弃策略,这是方案比较low。各位看官有什么想法和实现方案,可以留言交流。

在这里只是记录一下坑点。

private void save(ResourceType resourceType, MultipartFile file, String bucketName, ObjectType objectType, ObjectMetadata objMetadata, String objectKey) {

    //保存资源:多线程处理(注意,此处不是线程安全的)
   /* threadPoolExecutor.execute(() -> {

    });*/
       ...
       ...
        ossClient.putObjectMultipart(new PutObjectRequest(bucketName, objectKey, inputStream, objMetadata)
            .withCannedAcl(CannedAccessControlList.PublicRead));
        log.info("resource  has been saved in OSS . resourceType: {},fileName:{}, fileSize:{},bucketName:{},objectType:{},objMetadata:{}.", resourceType
            .getResourceName(), file.getOriginalFilename(), file.getSize(), bucketName, objectType, objMetadata);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值