Я пытаюсь переслать файл из http-загрузки в s3AsyncClient.
Важно, чтобы он был асинхронным и близким к нулю копий, поэтому я использовал netty HttpClient и S3AsyncClient и передаю файл через Publisher
Но когда я запускаю это, для больших файлов файлы, хранящиеся в s3, кажутся повреждены, они становятся немного короче исходного файла, и некоторые символы отсутствуют.
В настоящее время у меня следующие настройки:
Flux publisher = reactorHttpClient
.get()
.uri(fileUrl)
.responseContent()
.asByteBuffer();
s3AsyncClient.putObject(builder -> builder.bucket(bucketName).key(fileName).build(),
AsyncRequestBody.fromPublisher(publisher))
.whenComplete(...);
Моя настройка s3Client:
SdkAsyncHttpClient nettyHttpClient = NettyNioAsyncHttpClient.builder()
.maxConcurrency(100)
.build();
S3AsyncClientBuilder s3AsyncClientBuilder = S3AsyncClient.builder()
.multipartEnabled(true)
.httpClient(nettyHttpClient)
.build();