当我向SQS发送多条消息并将其读取为
时//将消息发送到队列
SendMessageRequest smr = new SendMessageRequest(queueUrl, "one");
sqs.sendMessage(smr);
smr = new SendMessageRequest(queueUrl, "two");
sqs.sendMessage(smr);
smr = new SendMessageRequest(queueUrl, "three");
sqs.sendMessage(smr);
Thread.sleep(5000);
//阅读队列
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
我的列表中只有一条消息。
当我第二次重复“阅读队列”时,我收到了第二条消息,当我第三次重复时,我得到了第三条消息。从队列中检索的消息是随机顺序的。但为什么我没有收到List<messages>
中的所有3条消息?
答案 0 :(得分:1)
您需要在请求中设置maxNumberOfMessages
。
尝试
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl)
.withMaxNumberOfMessages(3);
看看你是否得到了所有这些。
修改强>
其实我刚看到这个question,我想你不会一次收到你的消息。您需要多次调用该方法。
答案 1 :(得分:0)
我们将等待超时设置为20并获得倍数。在你得到所有这些之前,你可能已经没时间了。
答案 2 :(得分:0)
阅读后删除消息将使您可以访问队列中的其他消息。因此您必须打多个电话才能查看所有消息...
这对我有用:sqs.deleteMessage(SQSQueueURL, message.getReceiptHandle());