2016-09-04 228 views
0

我想在AWS基礎架構上運行進程作爲守護進程,負責讀取AWS SQS隊列並進行一些過程。在AWS基礎架構上將進程作爲守護進程運行

我的第一種方法是使用部署在ECS Container服務上的Docker容器。所以我會在while true loop上睡幾秒鐘。使用這個,我可以控制處理之間的睡眠時間,所以如果我的SQS隊列已滿,我可以減少睡眠時間。所以

我知道可以使用AWS Lambda作爲cron作業,但我無法控制cron時間(減少或增加sqs大小的響應)。

AWS Lambda方法更簡單,不需要「任何」基礎架構,但靈活性較差。 有誰知道另一種方法?

+1

您可以使用Lambda調度程序,並且在您的lambda處理程序中,您可以向SQS請求20條消息(我相信這是您一次可以獲得的最大值)。如果它在完成之前獲得所有20條消息,則使用aws-sdk('AWS.Lambda.invoke(context.functionName)')重新調用它自己。如果少於20條消息,那麼它將在處理完這些消息後成功結束。 – idbehold

回答

0

看着AWS LAMBDA引擎蓋下處理的cron調度方式(見https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.htmlhttp://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.html),你應該能夠找到觸發您的拉姆達事件的CloudWatch從拉姆達本身進行修改。但是,Lambda和Cloudwatch Events的程序化API文檔相當稀少,因此您必須爲自己找出很多。總而言之,聽起來並不像一個簡單的方法,而只是運行你自己的容器,儘管如果你有很多這樣的事情要做,它可能並不會傷害到將它們全部打包在一個庫中。

相關問題