从 SQS 接收的消息数量是否限制为每个批处理调用 10 个

Roy*_*ger 2 java amazon-sqs amazon-web-services

我正在开发一个使用 Amazon SQS 的应用程序。我是 AWS 的新手,所以我对从 SQS 接收消息有一点疑问。我已经配置了一个 SQS,并希望通过使用长轮询来接收来自它的消息。我的问题是我最多可以从 SQS 获得多少条消息?

我已将 设置MaxNumberOfMessages为 50 和ReceiveMessageWaitTimeSeconds20。

一季度。我最多可以从 SQS 获得 50 条消息吗?

Q2。有ReceiveMessageWaitTimeSeconds什么关系?我在 AWS 文档中读到短轮询= 0 sec和长轮询的时间超过 0 秒。这是否意味着我也可以设置ReceiveMessageWaitTimeSeconds = 5以确保长轮询?

我还阅读了短轮询和长轮询之间的区别,因为前者只会查询 SQS 服务器的一个子集,而后者会查询所有服务器。那么除了它会等待 5 秒或 20 秒之外,秒是否重要?

我已经浏览了以下 AWS 文档:

示例代码如下:

CreateQueueRequest createQueueRequest = new CreateQueueRequest().withQueueName(queueName);
 String queueUrl = sqs.createQueue(createQueueRequest).getQueueUrl();
 ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
 receiveMessageRequest.setMaxNumberOfMessages(50);
 receiveMessageRequest.setReceiveMessageWaitTimeSeconds(20);
 List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
 for (Message message : messages) {
      // I'm a message from SQS
 }
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 6

长轮询只是意味着当没有可用消息时,Amazon SQS 在返回结果之前将等待一段时间。这样,SQS 将延迟响应,直到配置的时间已过或消息可用,而不是不断地请求消息

这有点像让孩子坐在汽车后座上说“我们到了吗?” 每秒一次。长轮询会增加他们询问之间的时间。

通过ReceiveMessage()调用提供的最大消息数是 10。文档说:“有效值:1 到 10。”

  • 它只会在消息为零时等待。如果有消息,会立即返回。(它可能不会返回_所有_消息,但它会返回至少一条。) (3认同)