code: @Override
      public void action(String queueUrl, List<String> receiptHandles) throws JMSException {
          if (receiptHandles == null || receiptHandles.isEmpty()) {
              return;
          }
  
          List<DeleteMessageBatchRequestEntry> deleteMessageBatchRequestEntries = new ArrayList<DeleteMessageBatchRequestEntry>();
          int batchId = 0;
          for (String receiptHandle : receiptHandles) {
              // Remove the message from queue of unAckMessages
              unAckMessages.poll();
              
              DeleteMessageBatchRequestEntry entry = new DeleteMessageBatchRequestEntry(
                      Integer.toString(batchId), receiptHandle);
              deleteMessageBatchRequestEntries.add(entry);
              batchId++;
          }
          
          DeleteMessageBatchRequest deleteMessageBatchRequest = new DeleteMessageBatchRequest(
                  queueUrl, deleteMessageBatchRequestEntries);
          /**
           * TODO: If one of the batch calls fail, then the remaining messages on
           * the batch will not be deleted, and will be visible and delivered as
           * duplicate after visibility timeout expires.
           */
          amazonSQSClient.deleteMessageBatch(deleteMessageBatchRequest);
      }
docs: Acknowledges up to 10 messages via calling
  <code>deleteMessageBatch</code>.