0

当我向我的 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();

我的列表中只有一条消息。

当我第二次重复“阅读队列”时,我收到第二条消息,第三次重复时我收到第三条消息。从队列中检索的消息是随机顺序的。但是为什么我没有收到所有 3 条消息List<messages>

4

3 回答 3

1

您需要maxNumberOfMessages在请求中设置。

尝试

ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl)
          .withMaxNumberOfMessages(3);

看看你是否得到了所有这些。

编辑
实际上我刚刚看到了这个问题,我认为您不会一次收到所有消息。您将需要多次调用该方法。

于 2013-05-05T22:08:20.803 回答
0

我们将等待超时设置为 20 并获得倍数。在你把它们全部搞定之前,你可能已经没有时间了。

于 2015-08-20T19:22:03.330 回答
0

阅读后删除消息将允许您访问队列中的其他消息。所以你必须打多个电话才能查看所有消息......

这对我有用:sqs.deleteMessage(SQSQueueURL, message.getReceiptHandle());

于 2020-05-07T14:35:44.190 回答