2013-05-05 66 views
0

當我發送多封郵件給我的SQS和閱讀它像列表<Message>只包含一個消息,雖然我通過很多

//發送消息到隊列

SendMessageRequest smr = new SendMessageRequest(queueUrl, "one"); 
    sqs.sendMessage(smr); 
    smr = new SendMessageRequest(queueUrl, "two"); 
    sqs.sendMessage(smr); 
    smr = new SendMessageRequest(queueUrl, "three"); 
    sqs.sendMessage(smr); 
    Thread.sleep(5000); 

//讀取隊列

ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl); 
List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); 

我的列表中只有一條消息。

當我第二次重複「閱讀隊列」時,我得到第二條消息,當我第三次重複時,我收到第三條消息。從隊列中檢索的消息是隨機的。但爲什麼我沒有收到List<messages>中的所有3條消息?

回答

1

您需要在請求中設置maxNumberOfMessages

嘗試

ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl) 
      .withMaxNumberOfMessages(3); 

,看看你是否得到所有的人。

編輯
其實我剛纔看到這個question,我想你不會得到你的信息都在一次。您將需要多次調用該方法。

0

我們將等待超時設置爲20並獲得倍數。在你全部拿到之前,你可能已經沒有時間了。

相關問題