- task-service создает файл Excel
- Он отправляет файл в системный сервис с помощью Feign (multipart/form-data)
Feign Client
@FeignClient(
name = "system-service",
url = "${feign.client.main.url.system}",
configuration = FeignMultipartConfig.class
)
public interface SystemServiceClient {
@PostMapping(
value = "/system-service/uploadFile",
consumes = MediaType.MULTIPART_FORM_DATA_VALUE
)
Map uploadFile(
@RequestPart("file") Resource file,
@RequestHeader MultiValueMap headers
);
}
Файл отправляется
ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(tempFile)) { @Override public String getFilename() { return fileName; } };
Контроллер в системном сервисе
@PostMapping("/uploadFile")public Map uploadFile( @RequestPart("file") MultipartFile file, @RequestHeader MultiValueMap headers) { return awsService.uploadFile(file, headers); }
Загрузка AWS
s3Client.putObject( request, RequestBody.fromInputStream(file.getInputStream(), file.getSize()) );
Проблема:
Загрузка иногда работает, но периодически происходит сбой:
java.util.concurrent.ExecutionException: feign.RetryableException: Incomplete output stream executing POST http://localhost:9008/system-service/uploadFile