簡體   English   中英

從 SQS 接收的消息數量限制為每次批處理調用 10 條

[英]Is receiving number of messages from a SQS limited to 10 per batch call

我正在開發一個使用 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 文檔:

示例代碼如下:

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。”

“setMaxNumberOfMessages”:這是為 SQS 可以在一個 go 發送給您的消息數量提供上限。 它可以發送少於設置的限制,但絕不會在一次響應中超過限制。

“ReceiveMessageWaitTimeSeconds”:如果設置為零,如果沒有可用的消息,您將收到很多空響應。 但是,將其設置為大於零會啟用長輪詢。 例如,如果您將此參數設置為 5,如果隊列沒有收到消息,它將至少等待 5 秒(從而避免給您空響應),但如果在 5 秒內收到消息,它將發送響應立即地。

但是,如果隊列在 5 秒后仍無法收到消息,那么它只會以空消息響應。 因此,必須根據您希望收到多少消息來調整此超時時間,如果消息較少,那么您可以等待更長的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM