@Override
        protected void process(List<SendMessageRequest> requests,
                               List<QueueBufferFuture<SendMessageRequest, SendMessageResult>> futures) {

            if (requests.isEmpty()) {
                return;
            }

            SendMessageBatchRequest batchRequest = new SendMessageBatchRequest().withQueueUrl(qUrl);
            ResultConverter.appendUserAgent(batchRequest, AmazonSQSBufferedAsyncClient.USER_AGENT);

            List<SendMessageBatchRequestEntry> entries = new ArrayList<SendMessageBatchRequestEntry>(requests.size());
            for (int i = 0, n = requests.size(); i < n; i++) {
                entries.add(RequestCopyUtils.createSendMessageBatchRequestEntryFrom(Integer.toString(i),
                        requests.get(i)));
            }
            batchRequest.setEntries(entries);

            SendMessageBatchResult batchResult = sqsClient.sendMessageBatch(batchRequest);

            for (SendMessageBatchResultEntry entry : batchResult.getSuccessful()) {
                int index = Integer.parseInt(entry.getId());
                futures.get(index).setSuccess(ResultConverter.convert(entry));
            }

            for (BatchResultErrorEntry errorEntry : batchResult.getFailed()) {
                int index = Integer.parseInt(errorEntry.getId());
                if (errorEntry.isSenderFault()) {
                    futures.get(index).setFailure(ResultConverter.convert(errorEntry));
                } else {
                    // retry.
                    try {
                        // this will retry internally up to 3 times.
                        futures.get(index).setSuccess(sqsClient.sendMessage(requests.get(index)));
                    } catch (AmazonClientException ace) {
                        futures.get(index).setFailure(ace);
                    }
                }
            }

        }
Processes the batch once closed. Is <em>NOT</em> called with a lock on {@code this}.
However, it's passed a local copy of both the {@code requests} and {@code futures} lists
made while holding the lock.
aws-java-sdk-sqs/src/main/java/com/amazonaws/services/sqs/buffered/SendQueueBuffer.java