

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar o cliente assíncrono do S3 baseado em Java para usar transferências paralelas
<a name="s3-async-client-multipart"></a>

Desde a versão 2.27.5, o cliente assíncrono do S3 padrão baseado em Java permite transferências paralelas automáticas (uploads e downloads de várias partes). Você configura o suporte para transferências paralelas ao criar o cliente assíncrono do S3 baseado em Java. 

Esta seção mostra como habilitar transferências paralelas e como personalizar a configuração.

## Crie uma instância de `S3AsyncClient`
<a name="s3-async-client-multipart-create"></a>

Quando você cria uma instância `S3AsyncClient` sem chamar nenhum dos métodos `multipart*` no [construtor](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClientBuilder.html), as transferências paralelas não são habilitadas. Cada uma das declarações a seguir cria um cliente assíncrono do S3 baseado em Java sem suporte para uploads e downloads de várias partes.

### Criar *sem suporte* a várias partes
<a name="s3-async-client-mp-off"></a>

**Example**  

```
import software.amazon.awssdk.auth.credentials.ProcessCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3AsyncClient;


S3AsyncClient s3Client = S3AsyncClient.create();

S3AsyncClient s3Client2 = S3AsyncClient.builder().build();

S3AsyncClient s3Client3 = S3AsyncClient.builder()
        .credentialsProvider(ProcessCredentialsProvider.builder().build())
        .region(Region.EU_NORTH_1)
        .build();
```

### Criar *com suporte* a várias partes
<a name="s3-async-client-mp-on"></a>

Para habilitar transferências paralelas com configurações padrão, chame o `multipartEnabled` no compilador e transmita `true` conforme mostrado no exemplo a seguir.

**Example**  

```
S3AsyncClient s3AsyncClient2 = S3AsyncClient.builder()
        .multipartEnabled(true)
        .build();
```

O valor padrão é 8 MiB para as configurações `thresholdInBytes` e `minimumPartSizeInBytes`.

Se você personalizar as configurações de várias partes, as transferências paralelas serão ativadas automaticamente, conforme mostrado a seguir.

**Example**  

```
import software.amazon.awssdk.services.s3.S3AsyncClient;
import static software.amazon.awssdk.transfer.s3.SizeConstant.MB;


S3AsyncClient s3AsyncClient2 = S3AsyncClient.builder()
        .multipartConfiguration(b -> b
                .thresholdInBytes(16 * MB)
                .minimumPartSizeInBytes(10 * MB))
        .build();
```

## Upload de fluxos de tamanho desconhecido
<a name="java-async-client-stream-unknown-size"></a>

O cliente assíncrono do S3 baseado em Java com várias partes habilitadas pode lidar com eficiência com fluxos de entrada em que o tamanho total não é conhecido com antecedência:

```
public PutObjectResponse asyncClient_multipart_stream_unknown_size(String bucketName, String key, InputStream inputStream) {

    S3AsyncClient s3AsyncClient = S3AsyncClient.builder().multipartEnabled(true).build();
    ExecutorService executor = Executors.newSingleThreadExecutor();
    AsyncRequestBody body = AsyncRequestBody.fromInputStream(inputStream, null, executor); // 'null' indicates that the
                                                                                           // content length is unknown.
    CompletableFuture<PutObjectResponse> responseFuture =
            s3AsyncClient.putObject(r -> r.bucket(bucketName).key(key), body)
                    .exceptionally(e -> {
                        if (e != null) {
                            logger.error(e.getMessage(), e);
                        }
                        return null;
                    });

    PutObjectResponse response = responseFuture.join(); // Wait for the response.
    executor.shutdown();
    return response;
}
```

Essa abordagem evita problemas que podem ocorrer ao especificar manualmente um tamanho de conteúdo incorreto, como objetos truncados ou uploads malsucedidos.