Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modelli di codice non supportati dello strumento di migrazione
Lo strumento di migrazione converte automaticamente la maggior parte del codice v1 in v2. Tuttavia, alcuni modelli di codice richiedono la migrazione manuale. Questo argomento fornisce esempi dettagliati dei pattern non supportati più comuni e mostra come convertirli manualmente.
Il seguente elenco di modelli non è esaustivo. Se il codice non viene compilato dopo aver eseguito lo strumento di migrazione, segui le istruzioni di step-by-step migrazione per migrare manualmente il codice v1 rimanente.
Richiedi costruttori di oggetti con parametri
Su richiesta POJOs (escluso Amazon S3), lo strumento di migrazione trasforma solo i metodi setter. Lo strumento non supporta costruttori con parametri.
Pattern supportato: richiedi l'oggetto utilizzando i setter (nessun parametro del costruttore)
Prima (codice v1 originale):
import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest().withMessageBody("Hello World"); request.setQueueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue");
Dopo (risultato dello strumento di migrazione):
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; SendMessageRequest request = SendMessageRequest.builder() .messageBody("Hello World").build(); request = request.toBuilder() .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue").build();
Pattern non supportato: richiedi il costruttore di oggetti con parametri
Lo strumento di migrazione non può convertire costruttori con parametri:
Prima della migrazione manuale, ma dopo lo strumento di migrazione:
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. // This pattern requires manual migration. SendMessageRequest request = new SendMessageRequest( "https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
Lo strumento di migrazione trasforma l'importazione in v2, ma il codice del costruttore rimane invariato e richiede aggiornamenti manuali per utilizzare il pattern builder.
Dopo la migrazione manuale:
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; SendMessageRequest request = SendMessageRequest.builder() .messageBody("Hello World") .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue") .build();
Metodi client di assistenza con parametri individuali
Lo strumento di migrazione non è in grado di convertire i metodi dei client di servizio che utilizzano parametri individuali anziché oggetti di richiesta (escluso Amazon S3).
Prima (codice v1):
import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClient; AmazonSQS sqs = new AmazonSQSClient(); // The following v1 method takes individual parameters. sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
Dopo (risultato dello strumento di migrazione: non viene compilato):
import software.amazon.awssdk.services.sqs.SqsClient; // Import updated to v2. // No import statement for the v2 request POJO. SqsClient sqs = SqsClient.builder().build(); // Does not compile–v2 methods only accept request POJOs. sqs.sendMessage("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue", "Hello World");
È necessario aggiornare manualmente gli argomenti del metodo per utilizzare un oggetto di richiesta:
import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Add manually. SqsClient sqs = SqsClient.builder().build(); // Corrected v2 code. SendMessageRequest request = SendMessageRequest.builder() .queueUrl("https://sqs.us-west-2.amazonaws.com/0123456789012/demo-queue") .messageBody("Hello World") .build(); sqs.sendMessage(request);
Metodi di timeout della richiesta
Lo strumento di migrazione non converte i metodi che impostano i timeout sugli oggetti di richiesta.
Prima (codice v1):
import com.amazonaws.services.sqs.model.SendMessageRequest; SendMessageRequest request = new SendMessageRequest(); request.setSdkRequestTimeout(7);
Dopo (risultato dello strumento di migrazione: non viene compilato):
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; // Import updated to v2. SendMessageRequest request = SendMessageRequest.builder().build(); // Does not compile. request.setSdkRequestTimeout(7);
È necessario migrare manualmente per utilizzare il metodo della v2: overrideConfiguration
import software.amazon.awssdk.services.sqs.model.SendMessageRequest; import java.time.Duration; SendMessageRequest request = SendMessageRequest.builder().build(); // Corrected v2 code. request = request.toBuilder() .overrideConfiguration(o -> o.apiCallTimeout(Duration.ofSeconds(7))) .build();
Fornisci assistenza ai costruttori dei client con parametri
Lo strumento di migrazione converte i costruttori di client di servizio vuoti ma non può convertire i costruttori che accettano parametri come credenziali o configurazioni.
Prima (codice v1):
import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClient; AWSCredentials awsCredentials = new BasicAWSCredentials("akid", "skid"); AmazonSQS sqs = new AmazonSQSClient(awsCredentials);
Dopo (risultato dello strumento di migrazione: non viene compilato):
import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.services.sqs.SqsClient; // Import updated to v2. AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid"); // Does not compile. SqsClient sqs = new SqsClient(awsCredentials);
È necessario aggiornare manualmente il costruttore del client di servizio per utilizzare il pattern builder:
import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; // Add manually. import software.amazon.awssdk.services.sqs.SqsClient; AwsCredentials awsCredentials = AwsBasicCredentials.create("akid", "skid"); // Corrected v2 code. SqsClient sqs = SqsClient.builder() .credentialsProvider(StaticCredentialsProvider.create(awsCredentials)) .build();