2016-11-17 80 views
0

對於我的web應用程序,我需要一個單獨的EC2實例來處理CPU密集型的事情,以及可以排隊的事情,以便它們不阻礙Web服務實例圖像大小調整,發送電子郵件....請解釋Amazon SQS(一般排隊)

當您創建AWS Elastic Beanstalk實例時,它會要求您在「web」或「worker」環境之間進行選擇。根據我的理解,在工作環境中,我將處理這些任務。

SQS在這方面的作用是什麼?我讀到它只是關於發送「消息」和這種東西,但我怎樣才能讓我的圖像被「消息」調整大小?

我應該爲工作者實例創建特定的不同代碼來處理圖像大小調整,然後使用SQS命令它處理圖像?那麼SQS能否將圖像從網頁實例傳遞給工作者實例?我完全錯過了主要概念。

回答

0

排隊服務(如Amazon SQS)用於存儲消息供以後檢索。把它想象成一個TODO列表 - 將項目添加到隊列中,稍後從隊列中檢索一個項目並對該項目執行操作。

例如,假設用戶將圖像上傳到網站,並且您希望從這些圖像生成縮略圖。您的網站將在Amazon S3中存儲圖像,然後將消息推送到SQS隊列中。該消息將包括對S3中圖像的引用以及關於用戶的詳細信息。

然後,您的Elastic Beanstalk工作人員將向隊列請求消息並處理圖像。它會從S3中檢索圖像,調整其大小,將其存儲在S3存儲桶中,然後發送電子郵件給用戶以說明作業已完成。然後,工作人員退出,Elastic Beanstalk將觸發新工作人員從隊列中讀取下一條消息,並再次執行此操作。

Elastic Beanstalk worker

所以,是的 - 您將創建工人代碼。 Elastic Beanstalk將使用SQS消息觸發工作人員。 SQS本身不會觸發任何事情 - 它實際上是Elastic Beanstalk,它檢索消息並運行worker。

參見:Elastic Beanstalk worker environments

+0

謝謝,這就說明了一切。所以實際上,工作人員將啓動一個新的單獨的應用程序實例,只是爲了執行排隊的工作。它會被網址上的點擊觸發。所以在代碼方面需要做的是定義處理隊列的路由和代碼。是嗎? –