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

项目:unitstack    文件:MockSqsTest.java   
@Test
public void testPurgeQueue_shouldRemoveAll() {
  // create queue
  CreateQueueResult createdQueue = sqs.createQueue(new CreateQueueRequest().withQueueName("tea-earl-grey-queue"));
  // send messages
  String messageBody = "{\"life-universe-everything\":42}";
  sqs.sendMessage(new SendMessageRequest().withDelaySeconds(0).withMessageBody(messageBody)
      .withMessageGroupId("some-group-id-123").withQueueUrl(createdQueue.getQueueUrl()));
  String messageBody2 = "{\"dead-emptyness-nothing\":24}";
  sqs.sendMessage(new SendMessageRequest().withDelaySeconds(0).withMessageBody(messageBody2)
      .withMessageGroupId("some-group-id-123").withQueueUrl(createdQueue.getQueueUrl()));

  // purge queues
  PurgeQueueResult result = sqs.purgeQueue(new PurgeQueueRequest().withQueueUrl(createdQueue.getQueueUrl()));
  assertNotNull("verify that purge queue returned ok", result);

  // verify empty queue
  ReceiveMessageResult messageResult = sqs.receiveMessage(new ReceiveMessageRequest()
      .withMaxNumberOfMessages(9).withQueueUrl(createdQueue.getQueueUrl()).withVisibilityTimeout(10)
      .withWaitTimeSeconds(0));
  assertEquals("verify that queue is empty", 0, messageResult.getMessages().size());

  // cleanup
  getQueues().remove("tea-earl-grey-queue");
}
项目:rxjava2-aws    文件:SqsTest.java   
@Test(timeout = 5000)
public void testFirstCallToReceiveMessagesReturnsOneMessage() {
    final AmazonSQSClient sqs = Mockito.mock(AmazonSQSClient.class);
    final String queueName = "queue";
    Mockito.when(sqs.getQueueUrl(queueName)).thenAnswer(x -> new GetQueueUrlResult().withQueueUrl(queueName));
    Mockito.when(sqs.receiveMessage(Mockito.<ReceiveMessageRequest>any()))
            .thenReturn(new ReceiveMessageResult().withMessages(new Message().withBody("body1")));
    Sqs.queueName(queueName) //
            .sqsFactory(() -> sqs) //
            .messages() //
            .map(m -> m.message()) //
            .doOnError(Throwable::printStackTrace) //
            .take(1) //
            .test() //
            .awaitDone(10, TimeUnit.SECONDS) //
            .assertComplete() //
            .assertValue("body1");
    final InOrder inorder = Mockito.inOrder(sqs);
    inorder.verify(sqs, Mockito.atLeastOnce()).getQueueUrl(queueName);
    inorder.verify(sqs, Mockito.times(1)).receiveMessage(Mockito.<ReceiveMessageRequest>any());
    inorder.verify(sqs, Mockito.times(1)).shutdown();
    inorder.verifyNoMoreInteractions();
}
项目:rxjava2-aws    文件:SqsTest.java   
@Test(timeout = 5000)
public void testFirstCallToReceiveMessagesReturnsOneMessageAndHonoursBackpressure() {
    final AmazonSQSClient sqs = Mockito.mock(AmazonSQSClient.class);
    final String queueName = "queue";
    Mockito.when(sqs.getQueueUrl(queueName)).thenAnswer(x -> new GetQueueUrlResult().withQueueUrl(queueName));
    Mockito.when(sqs.receiveMessage(Mockito.<ReceiveMessageRequest>any()))
            .thenReturn(new ReceiveMessageResult().withMessages(new Message().withBody("body1")));
    Sqs.queueName(queueName) //
            .sqsFactory(() -> sqs) //
            .messages() //
            .map(m -> m.message()) //
            .doOnError(Throwable::printStackTrace) //
            .test(0) //
            .requestMore(1) //
            .assertValue("body1")//
            .assertNotComplete() //
            .cancel();
    final InOrder inorder = Mockito.inOrder(sqs);
    inorder.verify(sqs, Mockito.atLeastOnce()).getQueueUrl(queueName);
    inorder.verify(sqs, Mockito.times(1)).receiveMessage(Mockito.<ReceiveMessageRequest>any());
    inorder.verify(sqs, Mockito.times(1)).shutdown();
    inorder.verifyNoMoreInteractions();
}
项目:rxjava2-aws    文件:SqsTest.java   
@Test(timeout = 5000)
public void testFirstCallToReceiveMessagesReturnsNoMessagesThenSecondCallReturnsTwoMessages() {
    final AmazonSQSClient sqs = Mockito.mock(AmazonSQSClient.class);
    final String queueName = "queue";
    Mockito.when(sqs.getQueueUrl(queueName)).thenAnswer(x -> new GetQueueUrlResult().withQueueUrl(queueName));
    Mockito.when(sqs.receiveMessage(Mockito.<ReceiveMessageRequest>any())).thenReturn(new ReceiveMessageResult())
            .thenReturn(new ReceiveMessageResult().withMessages(new Message().withBody("body1"),
                    new Message().withBody("body2")));
    Sqs.queueName(queueName) //
            .sqsFactory(() -> sqs) //
            .messages() //
            .map(m -> m.message()) //
            .doOnError(Throwable::printStackTrace) //
            .take(2) //
            .test() //
            .awaitDone(10, TimeUnit.SECONDS) //
            .assertComplete() //
            .assertValues("body1", "body2");
    final InOrder inorder = Mockito.inOrder(sqs);
    inorder.verify(sqs, Mockito.atLeastOnce()).getQueueUrl(queueName);
    inorder.verify(sqs, Mockito.times(2)).receiveMessage(Mockito.<ReceiveMessageRequest>any());
    inorder.verify(sqs, Mockito.times(1)).shutdown();
    inorder.verifyNoMoreInteractions();
}
项目: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());
  }
项目:rxjava-aws    文件:SqsTest.java   
@Test(timeout = 5000)
public void testFirstCallToReceiveMessagesReturnsOneMessage() {
    AmazonSQSClient sqs = Mockito.mock(AmazonSQSClient.class);
    String queueName = "queue";
    Mockito.when(sqs.getQueueUrl(queueName)).thenAnswer(x -> new GetQueueUrlResult().withQueueUrl(queueName));
    Mockito.when(sqs.receiveMessage(Mockito.<ReceiveMessageRequest>any()))
            .thenReturn(new ReceiveMessageResult().withMessages(new Message().withBody("body1")));
    Sqs.queueName(queueName) //
            .sqsFactory(() -> sqs) //
            .messages() //
            .map(m -> m.message()) //
            .doOnError(Throwable::printStackTrace) //
            .take(1) //
            .to(test()) //
            .awaitTerminalEvent() //
            .assertCompleted() //
            .assertValue("body1");
    InOrder inorder = Mockito.inOrder(sqs);
    inorder.verify(sqs, Mockito.atLeastOnce()).getQueueUrl(queueName);
    inorder.verify(sqs, Mockito.times(1)).receiveMessage(Mockito.<ReceiveMessageRequest>any());
    inorder.verify(sqs, Mockito.times(1)).shutdown();
    inorder.verifyNoMoreInteractions();
}
项目:rxjava-aws    文件:SqsTest.java   
@Test(timeout = 5000)
public void testFirstCallToReceiveMessagesReturnsOneMessageAndHonoursBackpressure() {
    AmazonSQSClient sqs = Mockito.mock(AmazonSQSClient.class);
    String queueName = "queue";
    Mockito.when(sqs.getQueueUrl(queueName)).thenAnswer(x -> new GetQueueUrlResult().withQueueUrl(queueName));
    Mockito.when(sqs.receiveMessage(Mockito.<ReceiveMessageRequest>any()))
            .thenReturn(new ReceiveMessageResult().withMessages(new Message().withBody("body1")));
    Sqs.queueName(queueName) //
            .sqsFactory(() -> sqs) //
            .messages() //
            .map(m -> m.message()) //
            .doOnError(Throwable::printStackTrace) //
            .to(testWithRequest(0)) //
            .requestMore(1) //
            .assertValue("body1")//
            .assertNotCompleted() //
            .unsubscribe();
    InOrder inorder = Mockito.inOrder(sqs);
    inorder.verify(sqs, Mockito.atLeastOnce()).getQueueUrl(queueName);
    inorder.verify(sqs, Mockito.times(1)).receiveMessage(Mockito.<ReceiveMessageRequest>any());
    inorder.verify(sqs, Mockito.times(1)).shutdown();
    inorder.verifyNoMoreInteractions();
}
项目:rxjava-aws    文件:SqsTest.java   
@Test(timeout = 5000)
public void testFirstCallToReceiveMessagesReturnsNoMessagesThenSecondCallReturnsTwoMessages() {
    AmazonSQSClient sqs = Mockito.mock(AmazonSQSClient.class);
    String queueName = "queue";
    Mockito.when(sqs.getQueueUrl(queueName)).thenAnswer(x -> new GetQueueUrlResult().withQueueUrl(queueName));
    Mockito.when(sqs.receiveMessage(Mockito.<ReceiveMessageRequest>any())).thenReturn(new ReceiveMessageResult())
            .thenReturn(new ReceiveMessageResult().withMessages(new Message().withBody("body1"),
                    new Message().withBody("body2")));
    Sqs.queueName(queueName) //
            .sqsFactory(() -> sqs) //
            .messages() //
            .map(m -> m.message()) //
            .doOnError(Throwable::printStackTrace) //
            .take(2) //
            .to(test()) //
            .awaitTerminalEvent() //
            .assertCompleted() //
            .assertValues("body1", "body2");
    InOrder inorder = Mockito.inOrder(sqs);
    inorder.verify(sqs, Mockito.atLeastOnce()).getQueueUrl(queueName);
    inorder.verify(sqs, Mockito.times(2)).receiveMessage(Mockito.<ReceiveMessageRequest>any());
    inorder.verify(sqs, Mockito.times(1)).shutdown();
    inorder.verifyNoMoreInteractions();
}
项目:Camel    文件:AmazonSQSClientMock.java   
@Override
public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) throws AmazonServiceException, AmazonClientException {
    Integer maxNumberOfMessages = receiveMessageRequest.getMaxNumberOfMessages() != null ? receiveMessageRequest.getMaxNumberOfMessages() : Integer.MAX_VALUE;
    ReceiveMessageResult result = new ReceiveMessageResult();
    Collection<Message> resultMessages = new ArrayList<Message>();

    synchronized (messages) {
        int fetchSize = 0;
        for (Iterator<Message> iterator = messages.iterator(); iterator.hasNext() && fetchSize < maxNumberOfMessages; fetchSize++) {
            Message rc = iterator.next();
            resultMessages.add(rc);
            iterator.remove();
            scheduleCancelInflight(receiveMessageRequest.getQueueUrl(), rc);
        }
    }

    result.setMessages(resultMessages);
    return result;
}
项目:dropwizard-sqs-bundle    文件:SqsReceiverHandlerTest.java   
@Test
public void messageShouldBeProcessedAfterBeingConsumed() throws Exception {
    //GIVEN
    ReceiveMessageResult receiveMessageResult = new ReceiveMessageResult();
    Message message1 = new Message()
            .withMessageId("aaaa-bbbb-cccc-dddd-eeee")
            .withBody("Sample test message");
    Message message2 = new Message()
            .withMessageId("ffff-gggg-hhhh-iiii-jjjj")
            .withBody("Another sample test message");
    receiveMessageResult.setMessages(Lists.newArrayList(message1, message2));
    when(sqs.receiveMessage((ReceiveMessageRequest) anyObject())).thenReturn(receiveMessageResult, new ReceiveMessageResult());

    //WHEN
    receiverHandler.start();

    //THEN
    Thread.sleep(1000);
    verify(receiver, times(2)).receive(any());
    verify(receiver, times(1)).receive(message1);
    verify(receiver, times(1)).receive(message2);
}
项目:aws-java-sdk-stubs    文件:AmazonSQSStubTest.java   
@Test
public void sendAndReceiveMessage() {
  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));
  assertThat(messages.get(0).getBody(), equalTo(messageBody));
}
项目: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;
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withoutTimeout_returnsTextMessage() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(
                    Collections.singleton(new com.amazonaws.services.sqs.model.Message().withBody("content"))));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    //Act
    Message<?> receivedMessage = messageChannel.receive();

    //Assert
    assertNotNull(receivedMessage);
    assertEquals("content", receivedMessage.getPayload());
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withSpecifiedTimeout_returnsTextMessage() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(2).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(
                    Collections.singleton(new com.amazonaws.services.sqs.model.Message().withBody("content"))));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    //Act
    Message<?> receivedMessage = messageChannel.receive(2);

    //Assert
    assertNotNull(receivedMessage);
    assertEquals("content", receivedMessage.getPayload());
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withSpecifiedTimeout_returnsNull() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(2).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(
                    Collections.emptyList()));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    //Act
    Message<?> receivedMessage = messageChannel.receive(2);

    //Assert
    assertNull(receivedMessage);
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withoutDefaultTimeout_returnsNull() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(
                    Collections.emptyList()));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    //Act
    Message<?> receivedMessage = messageChannel.receive(0);

    //Assert
    assertNull(receivedMessage);
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withMimeTypeMessageAttribute_shouldCopyToHeaders() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    MimeType mimeType = new MimeType("test", "plain", Charset.forName("UTF-8"));
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(new com.amazonaws.services.sqs.model.Message().withBody("Hello").
                    withMessageAttributes(Collections.singletonMap(MessageHeaders.CONTENT_TYPE,
                            new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(mimeType.toString())))));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    // Act
    Message<?> receivedMessage = messageChannel.receive();

    // Assert
    assertEquals(mimeType, receivedMessage.getHeaders().get(MessageHeaders.CONTENT_TYPE));
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withStringMessageHeader_shouldBeReceivedAsQueueMessageAttribute() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    String headerValue = "Header value";
    String headerName = "MyHeader";
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(new com.amazonaws.services.sqs.model.Message().withBody("Hello").
                    withMessageAttributes(Collections.singletonMap(headerName,
                            new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(headerValue)))));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    // Act
    Message<?> receivedMessage = messageChannel.receive();

    // Assert
    assertEquals(headerValue, receivedMessage.getHeaders().get(headerName));
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withIncompatibleNumericMessageHeader_shouldThrowAnException() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    this.expectedException.expect(IllegalArgumentException.class);
    this.expectedException.expectMessage("Cannot convert String [17] to target class [java.util.concurrent.atomic.AtomicInteger]");

    HashMap<String, MessageAttributeValue> messageAttributes = new HashMap<>();
    AtomicInteger atomicInteger = new AtomicInteger(17);
    messageAttributes.put("atomicInteger", new MessageAttributeValue().withDataType(MessageAttributeDataTypes.NUMBER + ".java.util.concurrent.atomic.AtomicInteger").withStringValue(String.valueOf(atomicInteger)));

    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(new com.amazonaws.services.sqs.model.Message().withBody("Hello").
                    withMessageAttributes(messageAttributes)));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    // Act
    messageChannel.receive();
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withMissingNumericMessageHeaderTargetClass_shouldThrowAnException() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    this.expectedException.expect(MessagingException.class);
    this.expectedException.expectMessage("Message attribute with value '12' and data type 'Number.class.not.Found' could not be converted" +
            " into a Number because target class was not found.");

    HashMap<String, MessageAttributeValue> messageAttributes = new HashMap<>();
    messageAttributes.put("classNotFound", new MessageAttributeValue().withDataType(MessageAttributeDataTypes.NUMBER + ".class.not.Found").withStringValue("12"));

    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(new com.amazonaws.services.sqs.model.Message().withBody("Hello").
                    withMessageAttributes(messageAttributes)));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    // Act
    messageChannel.receive();
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withBinaryMessageHeader_shouldBeReceivedAsByteBufferMessageAttribute() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    ByteBuffer headerValue = ByteBuffer.wrap("My binary data!".getBytes());
    String headerName = "MyHeader";
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(new com.amazonaws.services.sqs.model.Message().withBody("Hello").
                    withMessageAttributes(Collections.singletonMap(headerName,
                            new MessageAttributeValue().withDataType(MessageAttributeDataTypes.BINARY).withBinaryValue(headerValue)))));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    // Act
    Message<?> receivedMessage = messageChannel.receive();

    // Assert
    assertEquals(headerValue, receivedMessage.getHeaders().get(headerName));
}
项目:spring-cloud-aws    文件:QueueMessageChannelTest.java   
@Test
public void receiveMessage_withIdOfTypeString_IdShouldBeConvertedToUuid() throws Exception {
    // Arrange
    AmazonSQSAsync amazonSqs = mock(AmazonSQSAsync.class);
    UUID uuid = UUID.randomUUID();
    when(amazonSqs.receiveMessage(new ReceiveMessageRequest("http://testQueue").
            withWaitTimeSeconds(0).
            withMaxNumberOfMessages(1).
            withAttributeNames(QueueMessageChannel.ATTRIBUTE_NAMES).
            withMessageAttributeNames("All"))).
            thenReturn(new ReceiveMessageResult().withMessages(new com.amazonaws.services.sqs.model.Message().withBody("Hello").
                    withMessageAttributes(Collections.singletonMap(MessageHeaders.ID,
                            new MessageAttributeValue().withDataType(MessageAttributeDataTypes.STRING).withStringValue(uuid.toString())))));

    PollableChannel messageChannel = new QueueMessageChannel(amazonSqs, "http://testQueue");

    // Act
    Message<?> receivedMessage = messageChannel.receive();

    // Assert
    Object idMessageHeader = receivedMessage.getHeaders().get(MessageHeaders.ID);
    assertTrue(UUID.class.isInstance(idMessageHeader));
    assertEquals(uuid, idMessageHeader);
}
项目:izettle-toolbox    文件:QueueServicePollerTest.java   
@Test
public void pollAndDeleteMessageShouldWork() throws Exception {
    ReceiveMessageResult receiveMessageResult = mock(ReceiveMessageResult.class);
    Message message = mock(Message.class);
    when(message.getBody()).thenReturn("{}");
    when(receiveMessageResult.getMessages()).thenReturn(Arrays.asList(message));
    when(mockAmazonSQS.receiveMessage(any(ReceiveMessageRequest.class))).thenReturn(receiveMessageResult);

    List<PolledMessage<TestMessage>> receivedMessages1 = queueServicePoller.poll();

    assertThat(receivedMessages1).hasSize(1);

    when(mockAmazonSQS.receiveMessage(any(ReceiveMessageRequest.class))).thenReturn(mock(ReceiveMessageResult.class));

    queueServicePoller.delete(receivedMessages1.get(0));
    List<PolledMessage<TestMessage>> receivedMessages2 = queueServicePoller.poll();
    assertThat(receivedMessages2).isEmpty();
}
项目:izettle-toolbox    文件:QueueServicePollerTest.java   
@Test
public void deleteBatchMessagesShouldWork() throws Exception {

    ReceiveMessageResult receiveMessageResult = mock(ReceiveMessageResult.class);
    Message message = mock(Message.class);
    when(message.getBody()).thenReturn("{}");
    when(receiveMessageResult.getMessages()).thenReturn(Arrays.asList(message, message));
    when(mockAmazonSQS.receiveMessage(any(ReceiveMessageRequest.class))).thenReturn(receiveMessageResult);

    List<PolledMessage<TestMessage>> receivedMessages1 = queueServicePoller.poll();

    assertEquals(2, receivedMessages1.size());

    when(mockAmazonSQS.receiveMessage(any(ReceiveMessageRequest.class))).thenReturn(mock(ReceiveMessageResult.class));

    queueServicePoller.delete(receivedMessages1.get(0));
    queueServicePoller.delete(receivedMessages1.get(1));
    List<PolledMessage<TestMessage>> receivedMessages2 = queueServicePoller.poll();
    assertEquals(0, receivedMessages2.size());
}
项目:awslocal    文件:DirectorySQS.java   
@Override
public ReceiveMessageResult receiveMessage(ReceiveMessageRequest receiveMessageRequest) throws AmazonClientException {
    DirectorySQSQueue queue = getQueueFromUrl(receiveMessageRequest.getQueueUrl(), false);

    //make sure we have a default for max number of messages.
    int maxNumberOfMessages = Objects.firstNonNull(receiveMessageRequest.getMaxNumberOfMessages(), 10); //10 is amazon spec default
    //and a default visibility timeout
    int visibilityTimeout = Objects.firstNonNull(receiveMessageRequest.getVisibilityTimeout(), _defaultVisibilitySeconds);
    //also a wait time
    int waitTime = Objects.firstNonNull(receiveMessageRequest.getWaitTimeSeconds(), 0);
    if (waitTime < 0 || waitTime > 20) {
        throw new AmazonServiceException("wait time of " + waitTime + " is not between 0 and 20");
    }
    try {
        List<Message> messageList = queue.receive(maxNumberOfMessages, visibilityTimeout, waitTime);
        return new ReceiveMessageResult().withMessages(messageList);
    } catch (IOException e) {
        throw new AmazonServiceException("error reading messages from " + queue.getQueuePath().toUri().toString(), e);
    }
}
项目:awslocal    文件:TestSQSClientCooperation.java   
public void client2CanReceiveTwiceAfterInitialEmpty() {
    final String queueUrl = someNewQueue();
    final ReceiveMessageResult result1 = _sqs2.receiveMessage(new ReceiveMessageRequest(queueUrl).withWaitTimeSeconds(1).withMaxNumberOfMessages(1));
    Assert.assertEquals(result1.getMessages().size(), 0);

    final SendMessageResult sendResult1 = _sqs1.sendMessage(new SendMessageRequest(queueUrl, someMessageBody()));
    final ReceiveMessageResult result2 = _sqs2.receiveMessage(new ReceiveMessageRequest(queueUrl).
            withWaitTimeSeconds(10).
            withMaxNumberOfMessages(1).
            withVisibilityTimeout(60));
    Assert.assertEquals(result2.getMessages().size(), 1, "first receive failed");

    final SendMessageResult sendResult2 = _sqs1.sendMessage(new SendMessageRequest(queueUrl, someMessageBody()));
    final ReceiveMessageResult result3 = _sqs2.receiveMessage(new ReceiveMessageRequest(queueUrl).
            withWaitTimeSeconds(20).
            withMaxNumberOfMessages(1));
    Assert.assertEquals(result3.getMessages().size(), 1, "second receive failed");
}
项目:awslocal    文件:TestSQSClientCooperation.java   
public void client1GetsFromBoth() {
    final String queueUrl = someNewQueue();
    final SendMessageResult sendResult1 = _sqs1.sendMessage(new SendMessageRequest(queueUrl, someMessageBody()));
    final SendMessageResult sendResult2 = _sqs2.sendMessage(new SendMessageRequest(queueUrl, someMessageBody()));

    final ReceiveMessageResult receiveMessageResult1 = _sqs1.receiveMessage(new ReceiveMessageRequest(queueUrl).
            withMaxNumberOfMessages(1).
            withWaitTimeSeconds(20));

    Assert.assertEquals(receiveMessageResult1.getMessages().size(), 1);

    final ReceiveMessageResult receiveMessageResult2 = _sqs1.receiveMessage(new ReceiveMessageRequest(queueUrl).
            withWaitTimeSeconds(20));

    Assert.assertEquals(receiveMessageResult2.getMessages().size(), 1);
}
项目:awslocal    文件:TestSNSClient.java   
public void publishAndReceiveSeparateSQSClients() {
    final String queueName = someQueueName();
    final String queueUrl = someNewQueue(queueName);
    final String topicName = "publishAndReceiveSeparateSQSClients";
    final String message = "hi from " + topicName;

    AmazonSNS amazonSNS = new InMemorySNS(_amazonSQS1,
            new Subscription().
                    withTopicArn(makeTopicArn(topicName)).
                    withProtocol("sqs").
                    withSubscriptionArn(makeSomeSubArn(topicName)).
                    withEndpoint(getQueueArn(queueName)));

    amazonSNS.publish(new PublishRequest(makeTopicArn(topicName), message));

    ReceiveMessageResult result = _amazonSQS2.receiveMessage(new ReceiveMessageRequest(queueUrl).
            withWaitTimeSeconds(15));
    Assert.assertEquals(result.getMessages().size(), 1);
    Assert.assertEquals(result.getMessages().get(0).getBody(), message);
}
项目:cfnassist    文件:TestSNSEventSource.java   
@Test
public void shouldCreateSNSAndSQSPlusPolicyAsNeeded() throws MissingArgumentException, NotReadyException, FailedToCreateQueueException, InterruptedException {
    eventSource.init();
    String existingSNSARN = eventSource.getSNSArn();

    // reset the queue, sns and subscription (this forces policy recreation as well)
    String sub = eventSource.getARNofSQSSubscriptionToSNS();
    if (sub!=null) {
        snsClient.unsubscribe(sub);
    }
    snsClient.deleteTopic(existingSNSARN);
    sqsClient.deleteQueue(eventSource.getQueueURL());

    // now recreate the source and make sure we can send/receive
    SNSEventSource anotherEventSource = new SNSEventSource(snsClient, sqsClient);
    anotherEventSource.init();
    // should be able to send via sns and then receive from sqs if everything worked ok
    snsClient.publish(anotherEventSource.getSNSArn(), "aMessage");
    ReceiveMessageRequest request = new ReceiveMessageRequest().
            withQueueUrl(anotherEventSource.getQueueURL()).
            withWaitTimeSeconds(10);
    ReceiveMessageResult result = sqsClient.receiveMessage(request);
    assertTrue(result.getMessages().size()>0);
}
项目:queue-slayer    文件:AmazonSQSPrioritizedMessageProviderTest.java   
@Test
public void oneQueue() {
    AmazonSQS amazonSQS = mock(AmazonSQS.class);

    // return one queue
    when(amazonSQS.listQueues(any(ListQueuesRequest.class)))
            .thenReturn(new ListQueuesResult().withQueueUrls("test-foo"));

    // return 3 messages from the queue
    when(amazonSQS.receiveMessage(any(ReceiveMessageRequest.class)))
            .thenReturn(new ReceiveMessageResult().withMessages(newMessage("foo"), newMessage("foo"), newMessage("foo")));

    AmazonSQSPrioritizedMessageProvider provider = new AmazonSQSPrioritizedMessageProvider(amazonSQS, "test", 1, 60 * 1000);
    List<Message> messages = provider.next();
    assertMessages(messages, 3, "foo");

    verify(amazonSQS).listQueues(any(ListQueuesRequest.class));
    verify(amazonSQS).receiveMessage(any(ReceiveMessageRequest.class));
}
项目:spring-integration-aws    文件:SqsExecutorTest.java   
@Test
public void incorrectMD5Test() throws MessageMarshallerException {

    String payload = "Hello, World";
    String messageBody = messageMarshaller.serialize(MessageBuilder
            .withPayload(payload).build());
    com.amazonaws.services.sqs.model.Message sqsMessage = new com.amazonaws.services.sqs.model.Message();
    sqsMessage.setBody(messageBody);
    sqsMessage.setMD5OfBody(messageBody);

    ReceiveMessageResult result = new ReceiveMessageResult();
    result.setMessages(Collections.singletonList(sqsMessage));
    when(mockSQS.receiveMessage(any(ReceiveMessageRequest.class)))
            .thenReturn(result);

    Message<?> recvMessage = executor.poll();
    assertNull("No message since MD5 checksum failed", recvMessage);
}
项目:spring-integration-aws    文件:SqsExecutorTest.java   
@Test
public void correctMD5Test() throws Exception {

    String payload = "Hello, World";
    String messageBody = messageMarshaller.serialize(MessageBuilder
            .withPayload(payload).build());
    com.amazonaws.services.sqs.model.Message sqsMessage = new com.amazonaws.services.sqs.model.Message();
    sqsMessage.setBody(messageBody);
    sqsMessage.setMD5OfBody(new String(Hex.encodeHex(Md5Utils
            .computeMD5Hash(messageBody.getBytes("UTF-8")))));

    ReceiveMessageResult result = new ReceiveMessageResult();
    result.setMessages(Collections.singletonList(sqsMessage));
    when(mockSQS.receiveMessage(any(ReceiveMessageRequest.class)))
            .thenReturn(result);

    Message<?> recvMessage = executor.poll();
    assertNotNull("message is not null", recvMessage);

    Message<?> enclosed = messageMarshaller
            .deserialize((String) recvMessage.getPayload());
    String recvPayload = (String) enclosed.getPayload();
    assertEquals("payload must match", payload, recvPayload);
}
项目:rxjava2-aws    文件:Sqs.java   
@Override
public void accept(State state, Emitter<SqsMessage> emitter) throws Exception {
    final Queue<Message> q = state.queue;
    Optional<SqsMessage> next = Optional.empty();
    while (!next.isPresent()) {
        while (q.isEmpty()) {
            final ReceiveMessageResult result = sqs.receiveMessage(request);
            q.addAll(result.getMessages());
        }
        final Message message = q.poll();
        next = getNextMessage(message, queueUrl, bucketName, s3, sqs, service);
    }
    emitter.onNext(next.get());
}
项目:async-sqs    文件:BufferedStringSqsQueueTest.java   
public BufferedStringSqsQueueTest() {
    queue.setSendMessageTaskBuffer(sendMessageTaskBufferMock);
    queue.setDeleteMessageTaskBuffer(deleteMessageTaskBufferMock);
    queue.setChangeMessageVisibilityTaskBuffer(changeMessageVisibilityTaskBufferMock);

    when(requestSenderMock.sendRequest(any(GetQueueAttributesAction.class))).thenReturn(Single.just(
            new GetQueueAttributesResult().withAttributes(MutableSqsQueueAttributesTest.ATTRIBUTE_STRING_MAP)
    ));
    when(requestSenderMock.sendRequest(any(ReceiveMessagesAction.class))).thenReturn(Single.just(
            new ReceiveMessageResult().withMessages(SQS_MESSAGE)
    ));
}
项目:conductor    文件:SQSObservableQueue.java   
@VisibleForTesting
List<Message> receiveMessages() {
       ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest()
               .withQueueUrl(queueURL)
               .withVisibilityTimeout(visibilityTimeout)
               .withMaxNumberOfMessages(batchSize);
       ReceiveMessageResult result = client.receiveMessage(receiveMessageRequest);
       return result.getMessages().stream().map(msg -> new Message(msg.getMessageId(), msg.getBody(), msg.getReceiptHandle())).collect(Collectors.toList());
   }
项目:aws-auto-operations-using-lambda    文件:InstanceStopFunction.java   
public void checkInstanceState(InstanceCheckStateRequest checkInstanceStateRequest, Context context) {

        LambdaLogger logger = context.getLogger();

        final String queueName = checkInstanceStateRequest.getQueueName();
        final String sqsEndpoint = checkInstanceStateRequest.getSqsEndpoint();

        // illegal parameter
        if (queueName == null || sqsEndpoint == null) {
            logger.log("[ERROR][checkInstanceStatus][stopped]QueueName or SQSEndpoint is not found Parameter. ");
            throw new IllegalArgumentException("QueueName or SQSEndpoint is not found Parameter. "
                    + "CheckInstanceStateRequest[" + checkInstanceStateRequest + "]");
        }

        // Only the specified number, reliably acquired
        int numberOfMessages = checkInstanceStateRequest.getNumberOfMessages();
        for (int i = 0; i < numberOfMessages; i++) {
            AmazonSQSAsync client = createSQSClient();
            client.setEndpoint(sqsEndpoint);
            try {
                String queueUrl = client.createQueue(queueName).getQueueUrl();

                ReceiveMessageRequest req = new ReceiveMessageRequest(queueUrl).withVisibilityTimeout(5)
                        .withMaxNumberOfMessages(checkInstanceStateRequest.getNumberOfMessages());
                Future<ReceiveMessageResult> result = client.receiveMessageAsync(req);
                while (!result.isDone()) {
                    Thread.sleep(100);
                }
                result.get().getMessages().stream()
                        .forEach(s -> checkInstanceState(s, "stopped", checkInstanceStateRequest, context));

            } catch (Exception e) {
                logger.log("[ERROR][checkInstanceStatus][stopped]message[" + e.getMessage() + "] stackTrace["
                        + getStackTrace(e) + "] CheckInstanceStateRequest[" + checkInstanceStateRequest + "]");
            } finally {
                client.shutdown();
            }
        }
    }
项目:aws-auto-operations-using-lambda    文件:InstanceStartFunction.java   
public void checkInstanceState(InstanceCheckStateRequest checkInstanceStateRequest, Context context) {

        LambdaLogger logger = context.getLogger();

        final String queueName = checkInstanceStateRequest.getQueueName();
        final String sqsEndpoint = checkInstanceStateRequest.getSqsEndpoint();

        // illegal parameter
        if (queueName == null || sqsEndpoint == null) {
            logger.log("[ERROR][checkInstanceStatus][running]QueueName or SQSEndpoint is not found Parameter. ");
            throw new IllegalArgumentException("QueueName or SQSEndpoint is not found Parameter. "
                    + "CheckInstanceStateRequest[" + checkInstanceStateRequest + "]");
        }

        // Only the specified number, reliably acquired
        int numberOfMessages = checkInstanceStateRequest.getNumberOfMessages();
        for (int i = 0; i < numberOfMessages; i++) {
            AmazonSQSAsync client = createSQSClient();
            client.setEndpoint(sqsEndpoint);
            try {
                String queueUrl = client.createQueue(queueName).getQueueUrl();

                ReceiveMessageRequest req = new ReceiveMessageRequest(queueUrl).withVisibilityTimeout(5)
                        .withMaxNumberOfMessages(checkInstanceStateRequest.getNumberOfMessages());
                Future<ReceiveMessageResult> result = client.receiveMessageAsync(req);
                while (!result.isDone()) {
                    Thread.sleep(100);
                }
                result.get().getMessages().stream()
                        .forEach(s -> checkInstanceState(s, "running", checkInstanceStateRequest, context));

            } catch (Exception e) {
                logger.log("[ERROR][checkInstanceStatus][running]message[" + e.getMessage() + "] stackTrace["
                        + getStackTrace(e) + "] CheckInstanceStateRequest[" + checkInstanceStateRequest + "]");

            } finally {
                client.shutdown();
            }
        }
    }
项目:carbon    文件:PollingTask.java   
@Override
public void run() {
    String queueUrl = client.getQueueUrl(queue).getQueueUrl();

    ReceiveMessageRequest receiveRequest = new ReceiveMessageRequest(queueUrl);
    receiveRequest.setMaxNumberOfMessages(10);

    while (true) {
        ReceiveMessageResult receiveResult= client.receiveMessage(receiveRequest);
        List<Message> messages = receiveResult.getMessages();

        messages.forEach(System.out::println);
    }
}
项目:paradox-nakadi-consumer    文件:SQSFailedEventSource.java   
private Optional<Message> fetchEvent() {

        final ReceiveMessageResult receiveMessageResult = amazonSQS.receiveMessage(queueUrl);

        if (receiveMessageResult.getMessages() != null && !receiveMessageResult.getMessages().isEmpty()) {
            return Optional.of(receiveMessageResult.getMessages().get(0));
        } else {
            return Optional.empty();
        }
    }
项目:paradox-nakadi-consumer    文件:SQSFailedEventSourceTest.java   
@Test
public void testShouldFailWhileDeserializationOfFailedEvent() {

    final ReceiveMessageResult receiveMessageResult = new ReceiveMessageResult();
    receiveMessageResult.setMessages(Collections.singleton(new Message()));

    when(amazonSQS.receiveMessage(anyString())).thenReturn(receiveMessageResult);
    assertThatThrownBy(() -> sqsFailedEventSource.getFailedEvent()).isInstanceOf(IllegalStateException.class)
                            .hasMessageContaining("Exception occurred during deserialization. Message id =");
}