minio-java 的用法:“java.io.IOException: unexpected end of stream on”

Use of minio-java: "java.io.IOException: unexpected end of stream on"

提问人:jie Old 提问时间:11/17/2023 最后编辑:MC Emperorjie Old 更新时间:11/17/2023 访问量:27

问:

minio-java 版本:

8.3.1

Minio版本:

我的配置

@Configuration(proxyBeanMethods = false)
public class MinioConfiguration {

    @Bean
    @SneakyThrows
    @ConditionalOnMissingBean(MinioClient.class)
    public MinioClient minioClient(MinioConfig ossProperties) {
        return MinioClient.builder()
                .endpoint(ossProperties.getEndpoint())
                .credentials(ossProperties.getAccessKey(), ossProperties.getSecretKey())
                .httpClient(newDefaultHttpClient())
                .build();
    }
    
    
    private OkHttpClient newDefaultHttpClient() {
        return new OkHttpClient()
                .newBuilder()
                .connectTimeout(10000, TimeUnit.MILLISECONDS)
                .protocols(Arrays.asList(Protocol.HTTP_1_1))
                .retryOnConnectionFailure(true)
                .build();
    
    }
}

法典

@SneakyThrows 
public String uploadFile(InputStream inputStream, String bucketName, String path, String suffix) {
    boolean exists = minioClient.bucketExists(BucketExistsArgs.builder()
        .bucket(bucketName)
        .build());
    if (!exists) {
        minioClient.makeBucket(MakeBucketArgs.builder()
            .bucket(bucketName)
            .build());
        minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
            .bucket(bucketName)
            .config(config)
            .build());
    }
    String dateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

    String filePath = new StringBuilder()
        .append(path)
        .append(dateTime)
        .append("/")
        .append(IdUtil.fastSimpleUUID())
        .append(suffix)
        .toString();
    minioClient.putObject(PutObjectArgs.builder()
        .bucket(bucketName)
        .object(filePath)
        .stream(inputStream, inputStream.available(), -1)
        .build());
    return filePath;
}

当我在服务器上运行时,错误:“java.io.IOException:流的意外结束”,但不是每次,只是在长时间取消连接后的第一个连接上。本地操作正常,没有这种现象,我有点迷茫。

我也尝试加入 retryOnConnectionFailure,但 mini-java 8.3.1 不允许 PUT 和 POST 执行 retryOnConnectionFailure 操作。 我有其他解决方案吗?

我也尝试加入 retryOnConnectionFailure,但 mini-java 8.3.1 不允许 PUT 和 POST 执行 retryOnConnectionFailure 操作。 我有其他解决方案吗?

Java Minio

评论

0赞 jie Old 11/17/2023
Minio 使用 Docker 容器部署 版本:2022-07-04T21-2-54Z
0赞 user207421 11/17/2023
“意外的直播结束”是什么?
0赞 jie Old 11/17/2023
完整的错误消息是“java”。io。IOException:172.17.0.1:9000 上的流意外结束...“ 我发现的问题是OkHttpClient抛出的,其中”172.17.0.1:9000“是我在容器中部署的minio地址

答: 暂无答案