我试图了解以下代码的行为:
// receive messages from the queue
List<Message> messages = sqs.receiveMessage(queueUrl).getMessages();
// delete messages from the queue
for (Message m : messages) {
sqs.deleteMessage(queueUrl, m.getReceiptHandle());
}
答案 0 :(得分:2)
不是,receiveMessage
请求最多返回10条消息。
答案 1 :(得分:1)
1-不,正如Mark所说的,它最多只会返回10条消息。
2-您有两个选择:
第一: 每隔1分钟发送一次请求(例如),并将消息放入队列中,进行处理并删除。因此,您的函数会在几分钟后检索所有这些变量。
第二: 使用AWS Lambda函数来处理您的队列。 有关更多信息,请阅读以下文档: https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html
如果您要处理大量消息,则由于性能和成本,第二种方法更好。 (AWS根据对SQS的总请求向您收费,因此在第一种方法中,如果队列中没有任何消息,则您的应用每隔一分钟发送一次请求,而不会返回任何消息)