2011-08-23 29 views
1

目前,我正在調查亞馬遜SQS。我正在嘗試獲取隊列中的消息數量。如何在亞馬遜簡單隊列服務中獲取精確的消息數量?

我這樣做的方式是總結ApproximateNumberOfMessages和ApproximateNumberOfMessagesNotVisible(我從隊列屬性中獲得)的數量。

但是,亞馬遜平方的更新有延遲。例如,如果我在5秒前將消息發送到隊列,我將在隊列中獲得0條消息。將消息發送到隊列後,我試圖等待1分鐘。但是,有時它不起作用。

所以,我想知道捕獲這些信息的最好方法是什麼。謝謝。

+0

另一種方法可能會繼續從隊列中獲取所有消息並總結列表大小。 – user836112

回答

2

你所做的基本上是知道這一點的唯一方法。 SQS具有最終的一致性,這意味着它很難得到確切的實數。

爲了調試的目的,我建議登錄添加隊列和登錄請求以退出隊列的請求。

您還可以爲每封郵件添加某種唯一ID(或遞增ID),以便您更輕鬆地進行跟蹤。

+0

感謝您的回覆:) – user836112

+0

有沒有可靠的方法檢查數字是否爲0?我想清空一個隊列,然後在它是空的時候刪除它(不,我不能清除,我也必須處理這些消息)。如果我確保在清空時沒有消息被添加到隊列中,那麼當消息仍然留在隊列中時,我能確定ApproximateNumberOfMessages永遠不會給我0嗎? – udiboy1209