2015-09-02 52 views
6

我的系統運行在亞馬遜自動調節組上,一個功能允許用戶進行用戶消息傳遞,我有以下用例來解決。在發送到SNS之前,我可以將Amazon SQS用作延遲隊列嗎?

  1. 我的應用程序在用戶之間發送了一條新消息。
  2. 通過電子郵件通知用戶的消息被放入具有60秒延遲的隊列中。此延遲允許實時聊天客戶端(faye/angularjs)查看消息並將其標記爲已查看。
  3. 在延遲之後,消息被拾取,檢查「讀取」狀態,並且如果未被客戶端讀取,則分派電子郵件。

本來我打算在每個應用程序服務器上使用cronjob來輪詢消息隊列,但是對我而言,使用SNS調用某種電子郵件發送端點(可能在Lambda中)會更有效, 。

我看不出有什麼辦法可以讓SNS進行SQS輪詢,但是有人可以建議這樣做嗎?本質上,我希望延遲SNS,這樣我就不會通過電子郵件警報在「實時」聊天中發送垃圾郵件。

謝謝

回答

4

不幸的是,這尚未開箱即用。缺少的部分是通過Amazon SQS隊列生成Amazon SNS消息到達/可見性的Amazon SNS通知,無論是通過推送(類似於Amazon S3 notifications,還是通過類似於Amazon Kinesis subscriptions的輪詢(關於差異的更多信息,請參閱The Pull/Push Event Models)),這將同時允許直接。一個AWS Lambda功能連接到RESP SQS delay queue事件,例如參見:

話雖這麼說,你可以解決此限制在幾個方面,例如:

的AWS LAMBDA團隊已經交付了近一個月多/最相似的功能要求」順便說一句,所以我希望他們能夠同時提供SQS事件處理和計劃在一年的過程中lambda函數仍然。

+0

聽起來像我現在最好採取cronjob-listening-SQS路線。直到亞馬遜推出幾個附近的功能!謝謝! – JimBlizz

+0

對於那些在2017年或以後發現自己的人 - 查看亞馬遜的「雲計算」解決方案:CloudWatch Events:http://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html – cr125rider

相關問題