У меня есть несколько сообщений в 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
Спасибо за ваш вклад