Java 类com.amazonaws.services.sqs.model.DeleteMessageRequest 实例源码

项目:aws-ski-resort    文件:QueueService.java   
public List<QueueMessage> getMessages() {

        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(_queueDns);
        List<Message> messages = _sqs.receiveMessage(receiveMessageRequest).getMessages();

        List<QueueMessage> deserializedMessages = new ArrayList<>();

        for (Message message : messages) {
            String body = message.getBody();
            QueueMessage qm = _gson.fromJson(body, QueueMessage.class);
            deserializedMessages.add(qm);

            System.out.println("query time: " + qm.queryExecutionTime);
            System.out.println("exec time: " + qm.totalExecutionTime);
            System.out.println("Has ex: " + qm.hasException);
            System.out.println("ex message: " + qm.exceptionMessage + "\n");

            String receiptHandle = message.getReceiptHandle();
            _sqs.deleteMessage(new DeleteMessageRequest(_queueDns, receiptHandle));
        }

        return deserializedMessages;
    }
项目:zipkin-aws    文件:AmazonSQSRule.java   
public List<Span> getSpans(boolean delete) {

    Stream<Span> spans = Stream.empty();

    ReceiveMessageResult result = client.receiveMessage(queueUrl);

    while(result != null && result.getMessages().size() > 0) {

      spans = Stream.concat(spans,
          result.getMessages().stream().flatMap(AmazonSQSRule::decodeSpans)
      );

      result = client.receiveMessage(queueUrl);

      if (delete) {
        List<DeleteMessageRequest> deletes = result.getMessages().stream()
            .map(m -> new DeleteMessageRequest(queueUrl, m.getReceiptHandle()))
            .collect(Collectors.toList());
        deletes.forEach(d -> client.deleteMessage(d));
      }
    }

    return spans.collect(Collectors.toList());
  }
项目:thingsboard    文件:SqsDemoClient.java   
private void pollMessages(AmazonSQS sqs) {
    log.info("Polling messages");
    while (true) {
        List<Message> messages = sqs.receiveMessage(QUEUE_URL).getMessages();
        messages.forEach(m -> {
            log.info("Message Received: " + m.getBody());
            System.out.println(m.getBody());
            DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(QUEUE_URL, m.getReceiptHandle());
            sqs.deleteMessage(deleteMessageRequest);
        });
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            e.printStackTrace();
        }
    }
}
项目:Camel    文件:SqsConsumer.java   
/**
 * Strategy to delete the message after being processed.
 *
 * @param exchange the exchange
 */
protected void processCommit(Exchange exchange) {
    try {

        if (shouldDelete(exchange)) {
            String receiptHandle = exchange.getIn().getHeader(SqsConstants.RECEIPT_HANDLE, String.class);
            DeleteMessageRequest deleteRequest = new DeleteMessageRequest(getQueueUrl(), receiptHandle);

            LOG.trace("Deleting message with receipt handle {}...", receiptHandle);

            getClient().deleteMessage(deleteRequest);

            LOG.trace("Deleted message with receipt handle {}...", receiptHandle);
        }
    } catch (AmazonClientException e) {
        getExceptionHandler().handleException("Error occurred during deleting message. This exception is ignored.", exchange, e);
    }
}
项目:s3_video    文件:AWSAdapter.java   
public List<JobStatusNotification> pollMessageFromQueueByJobId(String queueUrl, String jobId) {
    ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest()
       .withQueueUrl(queueUrl)
       .withMaxNumberOfMessages(MAX_NUMBER_OF_MESSAGES)
       .withVisibilityTimeout(VISIBILITY_TIMEOUT)
       .withWaitTimeSeconds(WAIT_TIME_SECONDS);

    List<JobStatusNotification> jobStatusNotifications = new ArrayList<>();

    for (Message message : sqsClient.receiveMessage(receiveMessageRequest).getMessages()) {
        try {
            JobStatusNotification jobStatusNotification = parseMessage(message.getBody());

            if (jobStatusNotification.getJobId().equalsIgnoreCase(jobId)) {
                jobStatusNotifications.add(jobStatusNotification);
                sqsClient.deleteMessage(new DeleteMessageRequest().withQueueUrl(queueUrl).withReceiptHandle(message.getReceiptHandle()));
            }
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
    }       
    return jobStatusNotifications;      
}
项目:spring-cloud-aws    文件:QueueMessageChannel.java   
@Override
public Message<String> receive(long timeout) {
    ReceiveMessageResult receiveMessageResult = this.amazonSqs.receiveMessage(
            new ReceiveMessageRequest(this.queueUrl).
                    withMaxNumberOfMessages(1).
                    withWaitTimeSeconds(Long.valueOf(timeout).intValue()).
                    withAttributeNames(ATTRIBUTE_NAMES).
                    withMessageAttributeNames(MESSAGE_ATTRIBUTE_NAMES));
    if (receiveMessageResult.getMessages().isEmpty()) {
        return null;
    }
    com.amazonaws.services.sqs.model.Message amazonMessage = receiveMessageResult.getMessages().get(0);
    Message<String> message = createMessage(amazonMessage);
    this.amazonSqs.deleteMessage(new DeleteMessageRequest(this.queueUrl, amazonMessage.getReceiptHandle()));
    return message;
}
项目:support    文件:SQS.java   
public static String popFrom(String name) {
    try {
        String queueUrl = getConnection().createQueue(
                new CreateQueueRequest(name)).getQueueUrl();
        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(
                queueUrl);
        receiveMessageRequest.setMaxNumberOfMessages(1);
        if (null != receiveMessageRequest) {
            List<Message> messages = getConnection().receiveMessage(
                    receiveMessageRequest).getMessages();
            if (messages.size() > 0) {
                String messageRecieptHandle = messages.get(0)
                        .getReceiptHandle();
                getConnection().deleteMessage(
                        new DeleteMessageRequest(receiveMessageRequest
                                .getQueueUrl(), messageRecieptHandle));
                return messages.get(0).getBody();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
项目:soundwave    文件:SqsTriggeredJobExecutor.java   
public void deleteMessage(Message msg) {
  DeleteMessageRequest
      request =
      new DeleteMessageRequest()
          .withQueueUrl(this.queueUrl)
          .withReceiptHandle(msg.getReceiptHandle());
  this.getClient().deleteMessage(request);
}
项目:emodb    文件:SQSScanWorkflow.java   
@Override
public void releaseScanRangeTask(ScanRangeTask task) {
    // Signal that the range is complete
    signalScanRangeComplete(task.getScanId());

    // Ack the task
    _sqs.deleteMessage(new DeleteMessageRequest()
            .withQueueUrl(getQueueUrl(_pendingScanRangeQueue))
            .withReceiptHandle(((QueueScanRangeTask) task).getMessageId()));
}
项目:Camel    文件:AmazonSQSClientMock.java   
@Override
public DeleteMessageResult deleteMessage(DeleteMessageRequest deleteMessageRequest) throws AmazonClientException {
    String receiptHandle = deleteMessageRequest.getReceiptHandle();
    if (inFlight.containsKey(receiptHandle)) {
        ScheduledFuture inFlightTask = inFlight.get(receiptHandle);
        inFlightTask.cancel(true);
    }
    return new DeleteMessageResult();
}
项目:distributed-image-classification    文件:Queue.java   
public void deleteLastMessage() {
    if (_lastMessage != null) {
        // Deletes a message
        logger.info("Deleting the last message with handle: " + _lastMessage.getReceiptHandle());
        _sqs.deleteMessage(new DeleteMessageRequest(_queueURL, _lastMessage.getReceiptHandle()));
        _lastMessage = null;
    }
}
项目:enhanced-snapshots    文件:AutoScalingEventListener.java   
public void run() {
    while (receiveMessages) {
        try {
            ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(getQueueUrl());
            List<Message> messages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages();
            for (Message message : messages) {
                JSONObject obj = new JSONObject(message.getBody());
                String msg = obj.get("Message").toString();
                JSONObject jsonMessage = new JSONObject(msg);
                if (jsonMessage.has("Event")) {
                    AutoScalingEvents event = AutoScalingEvents.fromString((String) jsonMessage.get("Event"));
                    switch (event) {
                        case EC2_INSTANCE_TERMINATE: {
                            if (eventsRepository.findOne(message.getMessageId()) == null) {
                                clusterEventPublisher.nodeTerminated((String) jsonMessage.get("EC2InstanceId"), message.getMessageId());
                                amazonSQS.deleteMessage(new DeleteMessageRequest()
                                        .withQueueUrl(getQueueUrl()).withReceiptHandle(message.getReceiptHandle()));
                            }
                            break;
                        }
                        default: {
                            LOG.warn("New AutoScaling event: {}", message.toString());
                            amazonSQS.deleteMessage(new DeleteMessageRequest()
                                    .withQueueUrl(getQueueUrl()).withReceiptHandle(message.getReceiptHandle()));
                        }
                    }
                } else {
                    LOG.warn("Unknown event: {}", message.toString());
                    amazonSQS.deleteMessage(new DeleteMessageRequest()
                            .withQueueUrl(getQueueUrl()).withReceiptHandle(message.getReceiptHandle()));
                }
            }
        } catch (Exception e) {
            LOG.error("Unable to process AutoScaling event", e);
        }
        sleep();
    }
}
项目:dropwizard-sqs-bundle    文件:SqsReceiverHandler.java   
private void deleteMessage(Message message) {
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("Delete message " + message);
    }
    String messageReceiptHandle = message.getReceiptHandle();
    sqs.deleteMessage(new DeleteMessageRequest(queueUrl, messageReceiptHandle));
}
项目:dropwizard-sqs-bundle    文件:SqsReceiverHandlerTest.java   
@Test
public void messageShouldBeDeletedAfterBeingConsumed() throws Exception {
    //GIVEN
    ReceiveMessageResult receiveMessageResult = new ReceiveMessageResult();
    Message message1 = new Message()
            .withMessageId("aaaa-bbbb-cccc-dddd-eeee")
            .withBody("Sample test message")
            .withReceiptHandle("qwertz");
    Message message2 = new Message()
            .withMessageId("ffff-gggg-hhhh-iiii-jjjj")
            .withBody("Another sample test message")
            .withReceiptHandle("asdfgh");
    receiveMessageResult.setMessages(Lists.newArrayList(message1, message2));

    // simulate at the 2nd call that the message has been deleted on SQS side
    when(sqs.receiveMessage((ReceiveMessageRequest) anyObject()))
            .thenReturn(receiveMessageResult)
            .thenReturn(new ReceiveMessageResult());

    DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest(queueUrl, "asdfgh");
    doNothing().when(sqs).deleteMessage(deleteMessageRequest);

    //WHEN
    receiverHandler.start();

    //THEN
    Thread.sleep(100);
    verify(sqs, times(1)).deleteMessage(deleteMessageRequest);
}
项目:amazon-sqs-connector    文件:AmazonSQSInputConnector.java   
@Override
public void poll(long waitInterval ) {
    Properties properties = new Properties();

    String access_key_id = getProperty("AccessKeyId");
       String secret_access_key = getProperty("SecretAccessKey");
       BasicAWSCredentials credentials = new BasicAWSCredentials(access_key_id, secret_access_key);

       AmazonSQS sqs = new AmazonSQSClient(credentials);

       // Region selection
       Region region = Region.getRegion(Regions.fromName(getProperty("region")));
       sqs.setRegion(region);

       GetQueueUrlResult queueUrl = sqs.getQueueUrl(getProperty("Queue"));

       ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl.getQueueUrl());
       List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();

       String outputMessage = "";
       // if there are messages then do the processing
       if(messages.size() > 0){

        //append the message properties to the localenv tree
        for (Message message : messages) {
               properties.setProperty("MessageId", message.getMessageId());
               properties.setProperty("ReceiptHandle", message.getReceiptHandle());
               properties.setProperty("MD5OfBody", message.getMD5OfBody());
               // get the message body to a string
               outputMessage = message.getBody();
           }
        properties.setProperty("queueUrl", queueUrl.getQueueUrl());
           // delete the message from the queue
           String messageReceiptHandle = messages.get(0).getReceiptHandle();
           sqs.deleteMessage(new DeleteMessageRequest(queueUrl.getQueueUrl(), messageReceiptHandle));
           ConnectorCallback callback = getCallback();
        callback.processInboundData(outputMessage.getBytes(), properties);
       }
}
项目:aws-java-sdk-stubs    文件:AmazonSQSStubTest.java   
@Test
public void deleteMessageSucceedsWithValidReceiptHandle() {
  final String queueName = "bizo";
  final String messageBody = "hi everybody";

  final CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
  sqs.createQueue(createQueueRequest);

  final GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest().withQueueName(queueName);
  final GetQueueUrlResult getQueueUrlResult = sqs.getQueueUrl(getQueueUrlRequest);
  final String queueUrl = getQueueUrlResult.getQueueUrl();

  final SendMessageRequest sendMessageRequest =
    new SendMessageRequest().withQueueUrl(queueUrl).withMessageBody(messageBody);
  sqs.sendMessage(sendMessageRequest);

  final int maxNumberOfMessages = 10;

  final ReceiveMessageRequest receiveMessageRequest =
    new ReceiveMessageRequest().withQueueUrl(queueUrl).withMaxNumberOfMessages(maxNumberOfMessages);
  final ReceiveMessageResult receiveMessageResult = sqs.receiveMessage(receiveMessageRequest);
  final List<Message> messages = receiveMessageResult.getMessages();
  assertThat(messages.size(), equalTo(1));

  final String receiptHandle = messages.get(0).getReceiptHandle();
  final DeleteMessageRequest deleteMessageRequest =
    new DeleteMessageRequest().withQueueUrl(queueUrl).withReceiptHandle(receiptHandle);

  try {
    sqs.deleteMessage(deleteMessageRequest);
  } catch (ReceiptHandleIsInvalidException e) {
    fail("ReceiptHandleIsInvalidException was thrown");
  }
}
项目:aws-java-sdk-stubs    文件:AmazonSQSStubTest.java   
@Test(expected = ReceiptHandleIsInvalidException.class)
public void deleteMessageFailsWithInvalidReceiptHandle() {
  final String queueName = "bizo";
  final String messageBody = "hi everybody";

  final CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
  sqs.createQueue(createQueueRequest);

  final GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest().withQueueName(queueName);
  final GetQueueUrlResult getQueueUrlResult = sqs.getQueueUrl(getQueueUrlRequest);
  final String queueUrl = getQueueUrlResult.getQueueUrl();

  final SendMessageRequest sendMessageRequest =
    new SendMessageRequest().withQueueUrl(queueUrl).withMessageBody(messageBody);
  sqs.sendMessage(sendMessageRequest);

  final ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest().withQueueUrl(queueUrl);
  final ReceiveMessageResult receiveMessageResult = sqs.receiveMessage(receiveMessageRequest);
  final List<Message> messages = receiveMessageResult.getMessages();
  assertThat(messages.size(), equalTo(1));

  final String receiptHandle = "bizo";
  final DeleteMessageRequest deleteMessageRequest =
    new DeleteMessageRequest().withQueueUrl(queueUrl).withReceiptHandle(receiptHandle);

  sqs.deleteMessage(deleteMessageRequest);
}
项目:amediamanager    文件:ElasticTranscoderTasks.java   
protected void deleteMessage(final Message message) {
    DeleteMessageRequest request = new DeleteMessageRequest()
        .withQueueUrl(config.getProperty(ConfigProps.TRANSCODE_QUEUE))
        .withReceiptHandle(message.getReceiptHandle());

    sqsClient.deleteMessage(request);
}
项目:generic-queue    文件:AwsSQS.java   
@Override
public void delete() throws Exception {
    while(this.receipts.size()>0){
        try {
            String receipt = this.receipts.poll();
            DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest()
            .withQueueUrl(this.queueUrl).withReceiptHandle(receipt);
            this.client.deleteMessage(deleteMessageRequest);
        } catch(Throwable e){
            e.printStackTrace();
        }
    }
}
项目:generic-queue    文件:AwsSQS.java   
@Override
public void delete(JSONObject data) throws Exception {
    String receipt = data.getString(ITEM_RECEIPT);
    try {
        DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest()
        .withQueueUrl(this.queueUrl).withReceiptHandle(receipt);
        this.client.deleteMessage(deleteMessageRequest);
    } catch(Throwable e){
        e.printStackTrace();
    }        
}
项目:graylog-plugin-aws    文件:CloudtrailSQSClient.java   
public void deleteNotification(CloudtrailSNSNotification notification) {
    LOG.debug("Deleting SQS CloudTrail notification <{}>.", notification.getReceiptHandle());

    sqs.deleteMessage(new DeleteMessageRequest()
            .withQueueUrl(queueName)
            .withReceiptHandle(notification.getReceiptHandle()));
}
项目:spring-cloud-aws    文件:SimpleMessageListenerContainerTest.java   
@Test
public void executeMessage_successfulExecution_shouldRemoveMessageFromQueue() throws Exception {
    // Arrange
    CountDownLatch countDownLatch = new CountDownLatch(1);
    SimpleMessageListenerContainer container = new SimpleMessageListenerContainer() {

        @Override
        protected void executeMessage(org.springframework.messaging.Message<String> stringMessage) {
            countDownLatch.countDown();
            super.executeMessage(stringMessage);
        }
    };

    AmazonSQSAsync sqs = mock(AmazonSQSAsync.class);
    container.setAmazonSqs(sqs);

    QueueMessageHandler messageHandler = new QueueMessageHandler();
    container.setMessageHandler(messageHandler);

    StaticApplicationContext applicationContext = new StaticApplicationContext();
    applicationContext.registerSingleton("testMessageListener", TestMessageListener.class);

    mockGetQueueUrl(sqs, "testQueue", "http://executeMessage_successfulExecution_shouldRemoveMessageFromQueue.amazonaws.com");
    mockGetQueueAttributesWithEmptyResult(sqs, "http://executeMessage_successfulExecution_shouldRemoveMessageFromQueue.amazonaws.com");

    messageHandler.setApplicationContext(applicationContext);
    messageHandler.afterPropertiesSet();
    container.afterPropertiesSet();

    mockReceiveMessage(sqs, "http://executeMessage_successfulExecution_shouldRemoveMessageFromQueue.amazonaws.com", "messageContent", "ReceiptHandle");

    // Act
    container.start();

    // Assert
    assertTrue(countDownLatch.await(2L, TimeUnit.SECONDS));
    container.stop();
    verify(sqs, times(1)).deleteMessageAsync(eq(new DeleteMessageRequest("http://executeMessage_successfulExecution_shouldRemoveMessageFromQueue.amazonaws.com", "ReceiptHandle")));
}
项目:aws-cloudtrail-processing-library    文件:SqsManager.java   
/**
 * Delete a message from the SQS queue that you specified in the configuration file.
 *
 * @param sqsMessage the {@link Message} that you want to delete.
 * @param progressStatus {@link ProgressStatus} tracks the start and end status.
 *
 */
public void deleteMessageFromQueue(Message sqsMessage, ProgressStatus progressStatus) {
    final Object reportObject = progressReporter.reportStart(progressStatus);
    boolean deleteMessageSuccess = false;
    try {
        sqsClient.deleteMessage(new DeleteMessageRequest(config.getSqsUrl(), sqsMessage.getReceiptHandle()));
        deleteMessageSuccess = true;
    } catch (AmazonServiceException e) {
        LibraryUtils.handleException(exceptionHandler, progressStatus, e, "Failed to delete sqs message.");
    }
    LibraryUtils.endToProcess(progressReporter, deleteMessageSuccess, progressStatus, reportObject);
}
项目:amazon-sqs-java-messaging-lib    文件:AutoAcknowledger.java   
/** Acknowledges the consumed message via calling <code>deleteMessage</code> */
@Override
public void acknowledge(SQSMessage message) throws JMSException {
    session.checkClosed();
    amazonSQSClient.deleteMessage(new DeleteMessageRequest(
            message.getQueueUrl(), message.getReceiptHandle()));
}
项目:amazon-sqs-java-messaging-lib    文件:UnorderedAcknowledger.java   
/**
 * Acknowledges the consumed message via calling <code>deleteMessage</code>.
 */
@Override
public void acknowledge(SQSMessage message) throws JMSException {
    session.checkClosed();
    amazonSQSClient.deleteMessage(new DeleteMessageRequest(
            message.getQueueUrl(), message.getReceiptHandle()));
    unAckMessages.remove(message.getReceiptHandle());
}
项目:amazon-sqs-java-messaging-lib    文件:AmazonSQSMessagingClientWrapperTest.java   
@Test(expected = JMSException.class)
public void testDeleteMessageThrowAmazonClientException() throws JMSException {

    DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest();
    doThrow(new AmazonClientException("ace"))
            .when(amazonSQSClient).deleteMessage(eq(deleteMessageRequest));

    wrapper.deleteMessage(deleteMessageRequest);
}
项目:amazon-sqs-java-messaging-lib    文件:AmazonSQSMessagingClientWrapperTest.java   
@Test(expected = JMSException.class)
public void testDeleteMessageThrowAmazonServiceException() throws JMSException {

    DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest();
    doThrow(new AmazonServiceException("ase"))
            .when(amazonSQSClient).deleteMessage(eq(deleteMessageRequest));

    wrapper.deleteMessage(deleteMessageRequest);
}
项目:amazon-sqs-java-messaging-lib    文件:AutoAcknowledgerTest.java   
/**
 * Test acknowledging message with auto acknowledger
 */
@Test
public void testAcknowledge() throws Exception {

    /*
     * Set up message mock
     */
    SQSMessage message = mock(SQSMessage.class);
    when(message.getQueueUrl())
            .thenReturn(QUEUE_URL);
    when(message.getReceiptHandle())
            .thenReturn(RECEIPT_HANDLE);

    /*
     * Use the acknowledger to ack the message
     */
    acknowledger.acknowledge(message);

    /*
     * Verify results
     */
    ArgumentCaptor<DeleteMessageRequest> argumentCaptor = ArgumentCaptor.forClass(DeleteMessageRequest.class);
    verify(amazonSQSClient).deleteMessage(argumentCaptor.capture());
    assertEquals(1, argumentCaptor.getAllValues().size());

    DeleteMessageRequest input = argumentCaptor.getAllValues().get(0);
    assertEquals(QUEUE_URL, input.getQueueUrl());
    assertEquals(RECEIPT_HANDLE, input.getReceiptHandle());
}
项目:amazon-sqs-java-messaging-lib    文件:UnorderedAcknowledgerTest.java   
/**
 * Test acknowledge does not impact messages that were not specifically acknowledge
 */
@Test
public void testAcknowledge() throws JMSException {
    int populateMessageSize = 37;
    populateMessage(populateMessageSize);
    int counter = 0;

    List<SQSMessage> populatedMessagesCopy =  new ArrayList<SQSMessage>(populatedMessages);
    while (!populatedMessagesCopy.isEmpty()) {

        int rand = new Random().nextInt(populatedMessagesCopy.size());
        SQSMessage message = populatedMessagesCopy.remove(rand);
        message.acknowledge();
        assertEquals(populateMessageSize - (++counter), acknowledger.getUnAckMessages().size());
    }
    assertEquals(0, acknowledger.getUnAckMessages().size());

    ArgumentCaptor<DeleteMessageRequest> argumentCaptor = ArgumentCaptor.forClass(DeleteMessageRequest.class);
    verify(amazonSQSClient, times(populateMessageSize)).deleteMessage(argumentCaptor.capture());

    for (SQSMessage msg : populatedMessages) {
        DeleteMessageRequest deleteRequest = new DeleteMessageRequest()
                .withQueueUrl(msg.getQueueUrl())
                .withReceiptHandle(msg.getReceiptHandle());
        assertTrue(argumentCaptor.getAllValues().contains(deleteRequest));
    }
}
项目:izettle-toolbox    文件:QueueProcessor.java   
private void deleteMessageFromQueue(String messageReceiptHandle, String messageQueueUrl) throws MessagingException {
    try {
        amazonSQS.deleteMessage(new DeleteMessageRequest(messageQueueUrl, messageReceiptHandle));
    } catch (AbortedException e) {
        LOG.info("Client abort delete message.");
    } catch (AmazonClientException ase) {
        throw new MessagingException("Failed to delete message with receipt handle " + messageReceiptHandle + " from queue " + messageQueueUrl, ase);
    }
}
项目:izettle-toolbox    文件:QueueServicePoller.java   
/**
 * Deletes a message from queue.
 *
 * @param message Received message.
 * @throws MessagingException Failed to delete message.
 */
@Override
public void delete(PolledMessage<M> message) throws MessagingException {
    try {
        amazonSQS.deleteMessage(new DeleteMessageRequest(queueUrl, message.getMessageId()));
    } catch (AmazonClientException ase) {
        throw new MessagingException("Failed to delete message with id " + message.getMessageId(), ase);
    }
}
项目:izettle-toolbox    文件:QueueProcessorTest.java   
@Test
public void shouldDeletePolledMessagesAfterHavingPassedThemToTheMessageHandler() throws Exception {
    // Arrange
    Message msg1 = createMessage("testReceiptHandle");
    receivedMessages.add(msg1);

    // Act
    queueProcessor.poll();

    // Assert
    ArgumentCaptor<DeleteMessageRequest> argumentCaptor = ArgumentCaptor.forClass(DeleteMessageRequest.class);
    verify(mockAmazonSQS).deleteMessage(argumentCaptor.capture());
    assertEquals("testReceiptHandle", argumentCaptor.getValue().getReceiptHandle());
}
项目:izettle-toolbox    文件:QueueProcessorTest.java   
@Test
public void shouldNotDeletePolledMessagesIfTheHandlerThrowsAnException() throws Exception {
    // Arrange
    Message msg1 = createMessage("msg1");
    receivedMessages.add(msg1);
    doThrow(new Exception()).when(mockHandler).handle(msg1);

    // Act
    queueProcessor.poll();

    // Assert
    verify(mockHandler).handle(msg1);
    verify(mockAmazonSQS, never()).deleteMessage(any(DeleteMessageRequest.class));
}
项目:awslocal    文件:DirectorySQS.java   
@Override
public DeleteMessageResult deleteMessage(DeleteMessageRequest deleteMessageRequest) throws AmazonClientException {
    try {
        DirectorySQSQueue queue = getQueueFromUrl(deleteMessageRequest.getQueueUrl(), false);
        queue.delete(deleteMessageRequest.getReceiptHandle());
        return new DeleteMessageResult();
    } catch (IOException e) {
        throw new AmazonServiceException("error deleting message", e);
    }
}
项目:queue-slayer    文件:AmazonSQSPrioritizedMessageProvider.java   
@Override
public void delete(Message message) {
    if (message instanceof OriginatingMessage) {
        OriginatingMessage originatingMessage = (OriginatingMessage) message;
        sqs.deleteMessage(new DeleteMessageRequest(originatingMessage.getOriginatingQueueUrl(), message.getReceipt()));
    } else {
        throw new RuntimeException("Unsupported message type: " + message.getBody());
    }
}
项目:spring-integration-aws    文件:SqsExecutor.java   
public String acknowlegdeReceipt(Message<?> message) {
    String receiptHandle = (String) message.getHeaders().get(
            SqsHeaders.MSG_RECEIPT_HANDLE);
    if (sqsClient != null && receiptHandle != null
            && !receiptHandle.isEmpty()) {
        sqsClient.deleteMessage(new DeleteMessageRequest(queueUrl,
                receiptHandle));
    }

    return receiptHandle;
}
项目:unitstack    文件:MockSqsTest.java   
@Test
public void testSendChangeVisibilityReceiveDeleteMessage_shouldSendChangeVisibilityReceiveAndDeleteMessage() {
  // create queue
  CreateQueueResult createdQueue = sqs.createQueue(new CreateQueueRequest().withQueueName("tea-earl-grey-queue"));
  // send message
  String messageBody = "{\"life-universe-everything\":42}";
  SendMessageResult sendResult = sqs.sendMessage(new SendMessageRequest().withDelaySeconds(0).withMessageBody(messageBody)
      .withMessageGroupId("some-group-id-123").withQueueUrl(createdQueue.getQueueUrl()));
  assertNotNull("message sending returned ok", sendResult);
  assertNotNull("verify body MD5 exists",sendResult.getMD5OfMessageBody());
  assertNotNull("verify message id exists",sendResult.getMessageId());
  // receive message
  ReceiveMessageResult messageResult = sqs.receiveMessage(new ReceiveMessageRequest()
      .withMaxNumberOfMessages(3).withQueueUrl(createdQueue.getQueueUrl()).withVisibilityTimeout(10)
      .withWaitTimeSeconds(0));
  assertNotNull("verify received message returned ok",messageResult);
  assertEquals("verify correct receive count", 1, messageResult.getMessages().size());
  Message firstMessage = messageResult.getMessages().get(0);
  assertEquals("verify correct body returned",messageBody,firstMessage.getBody());
  assertEquals("verify correct message MD5",getAwsMessageMD5(messageBody),firstMessage.getMD5OfBody());
  assertNotNull("verify message id exists",firstMessage.getMessageId());
  assertNotNull("verify receipt handle exists",firstMessage.getReceiptHandle());

  // extend visibility timeout
  ChangeMessageVisibilityResult visibilityResult = sqs.changeMessageVisibility(new ChangeMessageVisibilityRequest()
      .withQueueUrl(createdQueue.getQueueUrl()).withReceiptHandle(firstMessage.getReceiptHandle()).withVisibilityTimeout(40));
  assertNotNull("changing visibility returned ok", visibilityResult);

  // verify if message is invisible
  ReceiveMessageResult emptyResult = sqs.receiveMessage(new ReceiveMessageRequest()
      .withMaxNumberOfMessages(1).withQueueUrl(createdQueue.getQueueUrl()).withVisibilityTimeout(20)
      .withWaitTimeSeconds(0));
  assertTrue("at visibility timeout the message should not be available.", emptyResult.getMessages().isEmpty());

  // delete message from queue
  DeleteMessageResult deleteResult = sqs.deleteMessage(new DeleteMessageRequest()
      .withQueueUrl(createdQueue.getQueueUrl()).withReceiptHandle(firstMessage.getReceiptHandle()));
  assertNotNull("verify deletion returned ok",deleteResult);

  assertTrue("queue must be empty after removal",getQueues().get("tea-earl-grey-queue").getMessageQueue().isEmpty());
  assertTrue("invisibility-queue must be empty after removal",getQueues().get("tea-earl-grey-queue").getInvisibilityQueueFor(firstMessage.getReceiptHandle()).isEmpty());

  // cleanup
  getQueues().remove("tea-earl-grey-queue");
}
项目:unitstack    文件:MockSqsTest.java   
@Test
public void testDeleteMessage_withEmptyRequestParams_shouldWork() {
  assertNotNull(sqs.deleteMessage(new DeleteMessageRequest()));
}
项目:reactive-sqs-client    文件:ReactiveSqsClient.java   
public Observable<DeleteMessageResult> deleteMessageAsync(DeleteMessageRequest request) {
    return Observable.from(sqsClient.deleteMessageAsync(request));
}
项目:amazon-sqs-java-extended-client-lib    文件:AmazonSQSExtendedClient.java   
/**
 * <p>
 * Deletes the specified message from the specified queue and deletes the
 * message payload from Amazon S3 when necessary. You specify the message by
 * using the message's <code>receipt handle</code> and not the
 * <code>message ID</code> you received when you sent the message. Even if
 * the message is locked by another reader due to the visibility timeout
 * setting, it is still deleted from the queue. If you leave a message in
 * the queue for longer than the queue's configured retention period, Amazon
 * SQS automatically deletes it.
 * </p>
 * <p>
 * <b>NOTE:</b> The receipt handle is associated with a specific instance of
 * receiving the message. If you receive a message more than once, the
 * receipt handle you get each time you receive the message is different.
 * When you request DeleteMessage, if you don't provide the most recently
 * received receipt handle for the message, the request will still succeed,
 * but the message might not be deleted.
 * </p>
 * <p>
 * <b>IMPORTANT:</b> It is possible you will receive a message even after
 * you have deleted it. This might happen on rare occasions if one of the
 * servers storing a copy of the message is unavailable when you request to
 * delete the message. The copy remains on the server and might be returned
 * to you again on a subsequent receive request. You should create your
 * system to be idempotent so that receiving a particular message more than
 * once is not a problem.
 * </p>
 *
 * @param deleteMessageRequest
 *            Container for the necessary parameters to execute the
 *            DeleteMessage service method on AmazonSQS.
 *
 * @return The response from the DeleteMessage service method, as returned
 *         by AmazonSQS.
 *
 * @throws ReceiptHandleIsInvalidException
 * @throws InvalidIdFormatException
 *
 * @throws AmazonClientException
 *             If any internal errors are encountered inside the client
 *             while attempting to make the request or handle the response.
 *             For example if a network connection is not available.
 * @throws AmazonServiceException
 *             If an error response is returned by AmazonSQS indicating
 *             either a problem with the data in the request, or a server
 *             side issue.
 */
public DeleteMessageResult deleteMessage(DeleteMessageRequest deleteMessageRequest) {

    if (deleteMessageRequest == null) {
        String errorMessage = "deleteMessageRequest cannot be null.";
        LOG.error(errorMessage);
        throw new AmazonClientException(errorMessage);
    }

    deleteMessageRequest.getRequestClientOptions().appendUserAgent(SQSExtendedClientConstants.USER_AGENT_HEADER);

    if (!clientConfiguration.isLargePayloadSupportEnabled()) {
        return super.deleteMessage(deleteMessageRequest);
    }

    String receiptHandle = deleteMessageRequest.getReceiptHandle();
    String origReceiptHandle = receiptHandle;
    if (isS3ReceiptHandle(receiptHandle)) {
        deleteMessagePayloadFromS3(receiptHandle);
        origReceiptHandle = getOrigReceiptHandle(receiptHandle);
    }
    deleteMessageRequest.setReceiptHandle(origReceiptHandle);
    return super.deleteMessage(deleteMessageRequest);
}