Spring webflux + s3 Реактивный клиент - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь объединить webflux и AWS s3 2.x версию lib

        private S3AsyncClient s3Client;

        public Mono<String> uploadFile(
                final String accountCode,
                final String fileName,
                final FilePart file,
                final Long contentLength
        ) {
            var key = String.format("%s/%s/%s", accountCode, s3Config.getDocumentsFolder(), fileName);
            var publisher = file.content().map(DataBuffer::asByteBuffer);
            return Mono.fromCompletionStage(s3Client.putObject(
                    PutObjectRequest.builder()
                            .contentLength(contentLength)
                            .bucket(s3Config.getBucketName())
                            .key(key)
                            .build(),
                    AsyncRequestBody.fromPublisher(publisher)
                    )
            ).map(response -> {
                ......
            })
        }

Каждый раз, когда запускается API, он на некоторое время зависает, а затем

Caused by: java.lang.IllegalStateException: Unable to create the inputStream.
....
Caused by: java.io.FileNotFoundException: /var/folders/s1/g4d7dvhn5blctyrwq784t3cm0000gn/T/nio-file-upload/nio-body-1-a88eafe1-dc4b-4fdb-9668-8480efda6fc8.tmp (No such file or directory)
    at java.base/java.io.FileInputStream.open0(Native Method) ~[na:na]

Кажется, чанки переносят использование временного файла. Но я понятия не имею, почему он отсутствует. Подскажите, пожалуйста, что я делаю не так?

...