- 應用1號嵌件消息SQS
- 一個.NET工作者角色輪詢隊列,如果發現將其發送到App#2的方法,等待應用程序#2到結束,重新開始輪詢的隊列
- 應用#2的過程,是一項長期而繁重的任務消息
爲app#2可能需要相當長的時間處理這些消息,我無法預測有多少郵件同時發送從應用程序#1,隊列系統保證我的應用程序#2沒有耗盡資源,系統可以很容易地擴展。但是我想解決一個問題:我不想讓一臺機器運行worker角色(現在在Azure上)來輪詢一個隊列(所有東西都託管在別處,而worker角色不是一個選項)。此外,由於民意測驗之間的停頓,民意測驗不會像推動那樣敏感。
從輪詢切換到推動聽起來是正確的道路,但我需要我保證即使1k消息從應用程序#1在一秒內發送,應用程序#2處理它們一個接一個,並沒有命中1k次/秒。
我正在計劃一個應用#1發佈到SNS主題的設計,其訂戶是SQS和App#2。應用程序2檢查SQS隊列,如果它是空的,則退出,如果不是逐個處理消息,則退出。但是,我該如何編寫App#2(現在是.Net網絡/ Web服務),以便如果它已經在處理消息並從SNS接收到通知,它什麼也不做,並退出(如果不是多次處理將會運行)。
任何建議如何設計?我讀this blog post,但我不知道如何避免處理應用程序同時處理多個消息。