2016-09-04 169 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文档相当稀少,因此您必须为自己找出很多。总而言之,听起来并不像一个简单的方法,而只是运行你自己的容器,尽管如果你有很多这样的事情要做,它可能并不会伤害到将它们全部打包在一个库中。

相关问题