我正在开发使用Amazon SQS的应用程序。我是AWS的新手,因此对于从SQS接收消息有一个小疑问。我已经配置了SQS,并希望通过使用长轮询从中接收消息。我的问题是,我最多可以从SQS收到多少条消息?

我已将MaxNumberOfMessages设置为50,并且将ReceiveMessageWaitTimeSeconds设置为20。

Q1。我最多可以从SQS收到50条消息吗?

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

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

我浏览了以下AWS文档:


Amazon SQS Limits - Amazon Simple Queue Service
Amazon SQS Short and Long Polling


示例代码如下:

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
 }

最佳答案

长轮询仅表示没有可用消息时,Amazon SQS将等待一段时间,然后再返回结果。这样,SQS不会持续请求消息,而是将响应延迟到经过配置的时间或消息可用为止。

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

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

关于java - 正在从SQS接收消息的数量限制为每批调用10条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58601917/

10-13 02:29