Получить несколько сообщений из SQS

У меня есть несколько сообщений в SQS. Следующий код всегдавозвращает только один, даже если видны десятки (не в полете). setMaxNumberOfMessagesЯ думал, что это позволит одновременно потреблять несколько .. я неправильно понял это?

 CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
 String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();
 ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
 receiveMessageRequest.setMaxNumberOfMessages(10);
 List messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
 for (Message message : messages) {
      // i'm a message from SQS
 }

Я также пытался использовать withMaxNumberOfMessages, но безуспешно:

 receiveMessageRequest.withMaxNumberOfMessages(10);

Как узнать, что в очереди есть сообщения? Больше 1?

 Set attrs = new HashSet();
 attrs.add("ApproximateNumberOfMessages");
 CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
 GetQueueAttributesRequest a = new GetQueueAttributesRequest().withQueueUrl(sqs.createQueue(createQueueRequest).getQueueUrl()).withAttributeNames(attrs);
 Map result = sqs.getQueueAttributes(a).getAttributes();
 int num = Integer.parseInt(result.get("ApproximateNumberOfMessages"));

Приведенное выше всегда выполняется раньше и дает мне int, который больше 1

Спасибо за ваш вклад

26
задан sdolgy 31 March 2012 в 21:26
поделиться