我正在學習本教程:http://boto.s3.amazonaws.com/sqs_tut.html當隊列中有東西時,亞馬遜的SQS如何通知我的「工作人員」服務器之一?
當隊列中有東西時,我該如何分配我的20名工人之一來處理它?
我正在使用Python。
我正在學習本教程:http://boto.s3.amazonaws.com/sqs_tut.html當隊列中有東西時,亞馬遜的SQS如何通知我的「工作人員」服務器之一?
當隊列中有東西時,我該如何分配我的20名工人之一來處理它?
我正在使用Python。
不幸的是,SQS缺乏我們經常在隊列中期待的一些語義。沒有通知或任何形式的阻止「打電話」。
亞馬遜的相關SNS /簡單通知服務可能對您有所幫助。將工作添加到隊列後,您可以向訂閱的工作人員發送通知。
參見:
進一步指出與SQS一個問題 - 你必須輪詢新的通知,並沒有沒有保證在任何特定的民意調查你將接收隊列中存在的事件(這是由於其架構的冗餘性)。這意味着你需要考慮你的投票沒有返回存在的信息(這對我來說意味着我需要提高投票率)。總而言之,我發現SQS有太多限制(正如我在其他一些AWS工具(如SimpleDB)中發現的)。但這只是我注入的意見。
您是否有任何提及接收不在隊列中的事件的AWS文檔的參考? – 2012-07-15 16:19:44
問題是輪詢一個事件,被告知這裏沒有消息,但實際上有一個。並不是說你得到的消息不在隊列中。但是,在您的可見性超時之後,其他輪詢人員將看到您正在處理的消息 - 因此如果您在可見性超時時間內未處理消息,消息可能會被處理兩次。 – 2012-08-22 18:20:09
雖然這不是SQS的問題,但這是一個應用程序問題。如果它長時間運行,則應在此過程中延長可見性超時。 – 2013-09-02 10:16:10
這是(現在)可以在SQS隊列上進行長輪詢。
http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html
長輪詢支持(整數從1到20) - 持續時間(以秒爲單位)的ReceiveMessage動作呼叫將等待,直到消息是在隊列中的響應於包括,相對於返回如果消息尚不可用,則爲空響應。
如果您未在請求中指定WaitTimeSeconds,則使用隊列屬性ReceiveMessageWaitTimeSeconds來確定等待的時間。
類型:從0到20(秒)整數
默認:隊列的ReceiveMessageWaitTimeSeconds。
實際,如果你不要求低延遲,你可以試試這個:
你的隊列創建CloudWatch的警報,如收到> 0 作爲行動的消息可見或消息,您將消息發送到一個sns主題,然後可以通過http/s端點將消息發送給您的工作人員。
通常這種方法用於自動調節。
現在有一個來自Amazon的SQS的JMS包裝器,它允許您創建在新消息可用時自動觸發的偵聽器。
SQS現在開始提供長輪詢。因此它將您的呼叫減少到SQS – ankitjaininfo 2013-03-06 10:05:17