首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SQS接收的消息数量限制在每个批处理调用10条。

从SQS接收的消息数量限制在每个批处理调用10条。
EN

Stack Overflow用户
提问于 2019-10-29 05:37:39
回答 2查看 6.9K关注 0票数 3

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

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

Q1。我能从SQS得到最多50条消息吗?

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

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

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

示例代码如下:

代码语言:javascript
运行
复制
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
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-29 06:05:28

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

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

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

票数 12
EN

Stack Overflow用户

发布于 2019-10-29 06:06:46

"setMaxNumberOfMessages“:这是对SQS一次发送给您的消息数量的上限。它可以发送低于设定的限制,但永远不会超过限制在一个响应。

"ReceiveMessageWaitTimeSeconds":如果设置为零,如果没有可用的消息,您将收到大量空响应。但是,将其设置为大于零可以进行长时间的投票。例如,如果将此参数设置为5秒,队列将等待至少5秒,如果它没有收到消息(从而避免给出空响应),但是如果它在5秒内收到消息,它将立即发送响应。

但是,如果队列在5秒后也无法得到消息,那么它才会以空消息进行响应。因此,这个超时必须根据您期望接收的消息数量来调整,如果消息较少,那么您可以等待更长的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58601917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档