Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Habilitar el almacenamiento en búfer del lado del cliente y el procesamiento por lotes de solicitudes con Amazon SQS
AWS SDK for JavaAmazonSQSBufferedAsyncClient
que tiene acceso a Amazon SQS. Este cliente permite agrupar fácilmente en lotes las solicitudes mediante el almacenamiento en búfer en el cliente, en el que las llamadas realizadas desde el cliente primero se almacenan en búfer y después se envían como una solicitud por lotes a Amazon SQS.
El almacenamiento en búfer en el cliente permite almacenar en búfer hasta diez solicitudes y enviarlas como una solicitud por lotes, lo que disminuye el costo de uso de Amazon SQS y el número de solicitudes enviadas. AmazonSQSBufferedAsyncClient
almacena en búfer tanto las llamadas sincrónicas como las asincrónicas. Las solicitudes por lotes y la compatibilidad con los sondeos largos también pueden contribuir a mejorar el rendimiento. Para obtener más información, consulte Aumentar el rendimiento mediante el escalado horizontal y el procesamiento por lotes de acciones con Amazon SQS.
Dado que AmazonSQSBufferedAsyncClient
implementa la misma interfaz que AmazonSQSAsyncClient
, la migración de AmazonSQSAsyncClient
a AmazonSQSBufferedAsyncClient
solo suele requerir cambios mínimos en el código.
nota
El cliente asincrónico con búfer de Amazon SQS no admite actualmente las colas FIFO.
Uso de AmazonSQS BufferedAsyncClient
Antes de comenzar, complete los pasos de Configuración de Amazon SQS.
importante
Actualmente, AWS SDK for Java 2.x no es compatible con. AmazonSQSBufferedAsyncClient
Puede crear un nuevo cliente AmazonSQSBufferedAsyncClient
basado en AmazonSQSAsyncClient
; por ejemplo:
// Create the basic Amazon SQS async client final AmazonSQSAsync sqsAsync = new AmazonSQSAsyncClient(); // Create the buffered client final AmazonSQSAsync bufferedSqs = new AmazonSQSBufferedAsyncClient(sqsAsync);
Después de crear el nuevo AmazonSQSBufferedAsyncClient
, puede utilizarlo para enviar varias solicitudes a Amazon SQS (del mismo modo que con AmazonSQSAsyncClient
), por ejemplo:
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);
Configuración de AmazonSQS BufferedAsyncClient
AmazonSQSBufferedAsyncClient
está preconfigurado con ajustes válidos para la mayoría de los casos de uso. Se pueden configurar ajustes adicionales de AmazonSQSBufferedAsyncClient
; por ejemplo:
-
Crear una instancia de la clase
QueueBufferConfig
con los parámetros de configuración necesarios. -
Proporcionar la instancia al constructor
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);
QueueBufferConfig parámetros de configuración | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetro | Valor predeterminado | Descripción | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
longPoll |
true |
Cuando |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
longPollWaitTimeoutSeconds |
20 s |
El tiempo máximo, en segundos, que una llamada a notaEste parámetro no tiene ningún efecto cuando el sondeo largo está deshabilitado. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxBatchOpenMs |
200ms |
El tiempo máximo, en milisegundos, que una llamada saliente espera otras llamadas para procesar por lotes mensajes del mismo tipo. Cuanto mayor sea el valor, menos lotes son necesarios para realizar la misma cantidad de trabajo (no obstante, la primera llamada de un lote tiene que esperar más tiempo). Cuando se establece este parámetro en |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxBatchSize |
10 solicitudes por lote |
El número máximo de mensajes que se procesan juntos por lotes en una sola solicitud. Cuanto mayor sea la configuración, menos lotes serán necesarios para llevar a cabo el mismo número de solicitudes. notaEl valor máximo permitido para Amazon SQS es de diez solicitudes por lote. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxBatchSizeBytes |
256 KiB |
El tamaño máximo de un lote de mensajes, en bytes, que el cliente intenta enviar a Amazon SQS. nota256 KiB es el valor máximo permitido para Amazon SQS. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxDoneReceiveBatches |
10 lotes |
El número máximo de lotes de recepción que Cuanto mayor sea el valor, más solicitudes de recepción podrán satisfacerse sin tener que realizar una llamada a Amazon SQS (sin embargo, cuantos más mensajes se capturen previamente, más tiempo permanecerán en el búfer, lo que hará que caduque su propio tiempo de espera de visibilidad). nota
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxInflightOutboundBatches |
5 lotes |
El número máximo de lotes salientes activos que se pueden procesar al mismo tiempo. Cuanto mayor sea el valor, más rápido se podrán enviar los lotes salientes (sujeto a cuotas como la CPU o el ancho de banda) y más subprocesos podrá consumir |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxInflightReceiveBatches |
10 lotes |
El número máximo de lotes de recepción activos que se pueden procesar al mismo tiempo. Cuanto mayor sea el valor, más mensajes de podrán recibir (sujeto a cuotas como la CPU o el ancho de banda) y más subprocesos podrá consumir nota
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
visibilityTimeoutSeconds |
-1 |
Cuando este parámetro se establece en un valor positivo distinto de cero, el tiempo de espera de visibilidad que se establece aquí anula el tiempo de espera de visibilidad definido en la cola desde la que se consumen los mensajes. nota
No se puede establecer el tiempo de espera de visibilidad en |