【发布时间】:2017-01-12 01:24:45
【问题描述】:
我想在 AWS 基础设施上运行一个进程作为守护进程,负责读取 AWS SQS 队列并创建一些进程。
我的第一种方法是使用部署在 ECS Container 服务上的 docker 容器。所以我会在while true loop,睡几秒钟。使用它,我可以控制处理之间的睡眠时间,所以如果我的 SQS 队列已满,我可以减少睡眠时间。所以
我知道可以将 AWS Lambda 安排为 cron 作业,但我无法控制 cron 时间(减少或增加 sqs 大小的响应)。
AWS Lambda 方法更简单,不需要“任何”基础设施,但灵活性较低。 有人知道另一种方法吗?
【问题讨论】:
-
您可以使用 Lambda 调度程序,在您的 lambda 处理程序中,您可以只向 SQS 询问 20 条消息(我相信这是您一次可以获得的最大值)。如果它收到所有 20 条消息,那么在它完成之前它会使用 aws-sdk (
AWS.Lambda.invoke(context.functionName)) 重新调用自己。如果消息少于 20 条,那么它会在处理完这些消息后成功结束。
标签: docker aws-lambda amazon-sqs amazon-ecs