2012-11-27 52 views
4

圖像處理系統。亞馬遜SQS隊列:獲得排隊響應

用戶上傳一張照片到S3。圖像處理應用程序從S3獲取照片並開始處理並返回輸出。

過程: 網絡服務器在發送SQS消息到隊列圖像的信息,和圖像處理服務器獲取SQS消息,並且在這個圖像開始處理。一旦圖像處理完成,它將圖像上傳回S3,並將SQS消息返回隊列。圖像處理引擎位於EC2服務器上。

以下是問題: webserver如何從圖像處理服務器發送的隊列中獲取返回的SQS消息?

回答

6

不要將圖像處理視爲遠程過程調用,其中有請求和響應 - 將其視爲由分佈式系統中不同組件執行的一系列任務。解決這個問題有兩個隊列:uploaded-imagesprocessed-images

Web服務器接受圖像,將其放入S3中​​,並將消息發佈到uploaded-images隊列,表明需要處理它。

您的圖像處理EC2實例等待郵件到達uploaded-images隊列,然後從S3中檢索圖像,執行一些處理並將結果放入S3中​​。然後,他們向processed-images隊列發送一條消息,指示圖像已被處理。

Web服務器輪詢processed-images,做他們需要做一次圖像處理:更新數據庫,坐落在一個短暫的高速緩存表示圖像的條目進行處理,等

+0

大答案,但Web服務器如何從已處理的圖像隊列中檢索消息,以及從上傳的圖像隊列中檢索圖像處理服務器?我使用的是PHP,我可以將消息寫入上傳的圖像,但是如何從處理後的圖像隊列中獲取消息?你能用樣本代碼來證明嗎? – sandy

+0

那麼,一個正常的答案是運行後臺線程或工作進程,這兩者都可能對PHP有問題。如果您的「上傳」頁面轉到用戶等待其圖像進行處理的頁面,您可以在其中查看「已處理的圖像」 - 請記住,除了剛剛上傳的圖像之外,您可能正在處理已處理的圖像。如果不瞭解更多關於Web服務器的功能,就很難給出具體的建議。 – willglynn

+0

你可以給我你Skype或Gmail帳戶,以便我可以更詳細地轉達這個問題。 thanx – sandy