Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Activation de la mise en mémoire tampon côté client et du traitement par lots des demandes avec Amazon SQS
Le kit AWS SDK for JavaAmazonSQSBufferedAsyncClient
qui accède à Amazon SQS. Ce client facilite le traitement par lots des demandes à l'aide d'une mise en tampon côté client : les appels du client sont d'abord mis en tampon, puis transmis comme demande par lots à Amazon SQS.
La mise en tampon côté client autorise la mise en tampon et l'envoi en tant que demande par lots de 10 requêtes au maximum, ce qui réduit les coûts d'utilisation d'Amazon SQS et le nombre de requêtes envoyées. AmazonSQSBufferedAsyncClient
met en tampon les appels synchrones et asynchrones. Les demandes par lots et la prise en charge de l'attente active de longue durée peuvent également permettre d'augmenter le débit. Pour plus d’informations, consultez Augmenter le débit grâce à la mise à l'échelle horizontale et au traitement par lots d'actions avec Amazon SQS.
Dans la mesure où AmazonSQSBufferedAsyncClient
implémente la même interface qu'AmazonSQSAsyncClient
, la migration d'AmazonSQSAsyncClient
vers AmazonSQSBufferedAsyncClient
requiert généralement très peu de changements du code existant.
Note
Le client asynchrone en mémoire tampon Amazon SQS ne prend actuellement pas en charge les files d'attente FIFO.
Utilisation d'Amazon SQS BufferedAsyncClient
Avant de commencer, complétez les étapes détaillées dans Configuration d'Amazon SQS.
Important
Le AWS SDK for Java 2.x n'est actuellement pas compatible avec leAmazonSQSBufferedAsyncClient
.
Vous pouvez créer un nouveau AmazonSQSBufferedAsyncClient
basé sur AmazonSQSAsyncClient
, par exemple :
// Create the basic Amazon SQS async client final AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); // Create the buffered client final AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync);
Après avoir créé le nouveau AmazonSQSBufferedAsyncClient
, utilisez-le pour envoyer plusieurs demandes à Amazon SQS (comme avec AmazonSQSAsyncClient
), par exemple :
final CreateQueueRequest createRequest = new CreateQueueRequest().withQueueName("MyQueue"); final CreateQueueResult res = bufferedSqs.createQueue(createRequest); final SendMessageRequest request = new SendMessageRequest(); final String body = "Your message text" + System.currentTimeMillis(); request.setMessageBody( body ); request.setQueueUrl(res.getQueueUrl()); final Future<SendMessageResult> sendResult = bufferedSqs.sendMessageAsync(request); final ReceiveMessageRequest receiveRq = new ReceiveMessageRequest() .withMaxNumberOfMessages(1) .withQueueUrl(queueUrl); final ReceiveMessageResult rx = bufferedSqs.receiveMessage(receiveRq);
Configuration d'Amazon SQS BufferedAsyncClient
AmazonSQSBufferedAsyncClient
est préconfiguré avec des paramètres qui fonctionnent dans la plupart des cas d'utilisation. Vous pouvez configurer davantage AmazonSQSBufferedAsyncClient
, par exemple :
-
Créez une instance de la classe
QueueBufferConfig
avec les paramètres de configuration requis. -
Fournissez l'instance au constructeur
AmazonSQSBufferedAsyncClient
.
// Create the basic Amazon SQS async client final AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); final QueueBufferConfig config = new QueueBufferConfig() .withMaxInflightReceiveBatches(5) .withMaxDoneReceiveBatches(15); // Create the buffered client final AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync, config);
Paramètre | Valeur par défaut | Description |
---|---|---|
longPoll |
true |
Lorsque |
longPollWaitTimeoutSeconds |
20 s |
Durée maximale, en secondes, pendant laquelle un NoteCe paramètre n'a pas d'impact lorsque l'attente active de longue durée est désactivée. |
maxBatchOpenMs |
200 ms |
Durée maximale, en millisecondes, pendant laquelle un appel sortant attend d'autres appels du même type pour le traitement par lots. Plus le paramètre est élevé, moins il faut de lots pour effectuer la même quantité de travail (toutefois, le premier appel d'un lot doit passer plus de temps à attendre). Lorsque ce paramètre est défini sur |
maxBatchSize |
10 requêtes par lot |
Nombre maximal de messages traités dans un même lot dans le cadre d'une seule requête. Plus ce paramètre est élevé, moins le nombre de lots requis pour effectuer le même nombre de requêtes est élevé. Note10 demandes par lots est la valeur maximale autorisée pour Amazon SQS. |
maxBatchSizeBytes |
256 Kio |
Taille maximale d'un lot de messages, en octets, que le client essaie d'envoyer à Amazon SQS. Note256 KiB est la valeur maximale autorisée pour Amazon SQS. |
maxDoneReceiveBatches |
10 lots |
Nombre maximal de lots de réception récupérés au préalable par Plus le paramètre est élevé, plus il est possible de satisfaire un grand nombre de demandes sans devoir appeler Amazon SQS (toutefois, plus le nombre de messages récupérés au préalable est important, plus ils restent longtemps dans la mémoire tampon, ce qui entraîne l'expiration de leur délai de visibilité). Note
|
maxInflightOutboundBatches |
5 lots |
Nombre maximal de lots sortants actifs pouvant être traités en même temps. Plus ce paramètre est élevé, plus les lots sortants peuvent être envoyés rapidement (sous réserve d'autres quotas, tels que l'UC ou la bande passante) et plus le nombre de threads consommés par |
maxInflightReceiveBatches |
10 lots |
Nombre maximum de lots de réception actifs pouvant être traités en même temps. Plus ce paramètre est élevé, plus le nombre de messages susceptibles d'être reçus est important (sous réserve d'autres quotas, tels que l'UC ou la bande passante) et plus le nombre de threads consommés par Note
|
visibilityTimeoutSeconds |
-1 |
Lorsqu'une valeur positive autre que zéro a été définie pour ce paramètre, le délai de visibilité définit ici prévaut sur celui de la file d'attente à partir de laquelle les messages sont consommés. Note
Vous ne pouvez pas définir de délai de visibilité sur |